0

我在 MySQL 中输入了以下查询:

insert into hospital (name,age) values ('william', 'select * from department where age = $agegrp');

现在我已经获取了这个值(sql),并试图执行它。我怎样才能做到这一点?

我已将该select语句提取到一个名为$var.

$agegrp = "10";
$value = mysql_query ($var) or die ('error');

我只知道error我插入的查询有问题。我该如何解决这个问题?

4

3 回答 3

1

我的第一个问题:你为什么在你的医院表中存储 sql 代码?如果您的所有 sql 代码都嵌入到您的 php 程序代码中,那将更有意义。如果您以后更改表设计,则不必更改数据库表的内容。

但要回答您的问题,您的 $var 的内容是一个简单的字符串。你想要的是评估它或用变量 $agegrp 的实际值替换字符串'$agegrp'。所以你可以这样做:

$agegrp = "10";
$var = str_replace('$agegrp',$agegrp,$var;
$value = mysql_query ($var) or die ('error');

这将是一个简单的解决方案。

于 2012-07-13T12:00:07.800 回答
0

年龄是一个可能是整数的属性。您不能在该字段中插入查询。您需要做的是执行查询;

"SELECT * FROM Department WHERE age = {$agegrp}"

然后,获取结果,然后执行插入。此外,请尽早查看查询的绑定参数。您不想允许 sql 注入。

于 2012-07-13T11:56:17.337 回答
0

试试这个。

 <?php
    $con = mysqli_connect("localhost","username","password");
    if (!$con)
      {
      die('Could not connect: ' . mysqli_error());
      }

  $var=  mysqli_select_db("my_db", $con);

    $var="select * from department where age = $agegrp");
    $result=mysqli_query($var);
    while($row = mysqli_fetch_array($result))
      {
      echo $row['age'] ;
      echo "<br />";
      }

mysqli_close($con);
?>
于 2012-07-13T12:01:54.250 回答