我在尝试获取第一个 SQL 语句的结果值时遇到问题,以便我可以在第二个语句中使用 in。
我的第一句话是这样的:
$query = "SELECT restaurantid FROM restaurant WHERE username = '$_SESSION[username]'";
$result=mysql_query($query);
if(!$result)
{
echo "Error: " . mysql_error() . "Query: " . $query;
}
while ($row = mysql_fetch_assoc($result)) {
echo $row['restaurantid'];
}
mysql_free_result($result);
从我在浏览器上使用的检查器控制台,此语句在启动时返回“1”,这是我正在查找的变量。
直接在我的最后一行(mysql_free_result...)下面,我是我的第二个查询,如下所示:
$query = "INSERT INTO deal (dname, description, restaurantid) VALUES ('$name', '$desc', '$result')";
$add = mysql_query($query);
$num = mysql_numrows($add);
if($num != 0) {
echo "true";
} else {
echo "Error: " . mysql_error() . "Query: " . $query;
}
但是我的问题在于,每当我尝试执行此代码时,我的第二条语句似乎都没有获取第一个查询所需的先前结果值。只是希望有人能为我阐明一些情况。我是编码新手,我几乎已经正确了,所以所有帮助和建议将不胜感激!谢谢:)
最佳答案
首先,你不应该使用Mysql,因为它已经deprecated并且容易受到 SQL 注入(inject)攻击,请使用 Mysqli相反。
$restaurantId = $row['restaurantid'];
尽管使用 Mysql,查询应该如下所示 “INSERT INTO deal (dname,description,restaurantid) VALUES ('$name', '$desc', '$restaurantId')”
通过使用 Mysqli,它应该看起来像这样:
$stmt = $mysqli -> prepare("INSERT INTO deal (dname, description, restaurantid) VALUES (?,?,?)"
$stmt -> bind_param('ssi', $name, $desc, $restaurantId);
$stmt -> execute();
关于php - MySQL 中的多查询插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14920689/