我在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
所以我插入的查询出错了。我该如何解决这个问题?
答案 0 :(得分:1)
对我来说第一个问题:为什么要将sql代码存储在医院的桌子上? 如果你的所有sql代码都嵌入你的php程序代码中会更有意义。 如果您以后更改了表设计,则不必更改数据库表的内容。
但要回答你的问题,$ var的内容是一个简单的字符串。你想要的是评估它或用变量$ agegrp的实际值替换字符串'$ agegrp'。 所以你可以这样做:
$agegrp = "10";
$var = str_replace('$agegrp',$agegrp,$var;
$value = mysql_query ($var) or die ('error');
这将是一个简单的解决方案。
答案 1 :(得分:0)
age是一个可能是整数的属性。您无法在该字段中插入查询。你需要做的是执行查询;
"SELECT * FROM Department WHERE age = {$agegrp}"
然后,获取结果,然后执行插入。另外,请尽早查看查询的绑定参数。你不想允许sql注入。
答案 2 :(得分: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);
?>