php - MySQL 中的多查询插入

标签 php mysql insert mysql-insert-id

我在尝试获取第一个 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/

相关文章:

php - 启动Xampp时MySql崩溃了?

php - 如何在 Ubuntu 12.04 中将 PHP 版本从 5.3 降级到 5.2?

php - 解析 PHP ini 文件导致不推荐使用的错误

c - 如何在另一个数组中的用户指定位置插入一个数组并获取结果数组?

sql-server - 如何向链接服务器表中插入一行?

php - (MySQL/PHP) 使用 PHP 将数据插入 MySQL 表

php - Laravel 中的 destroy() 和 delete() 方法有什么区别?

PHP/HTML 表单不使用 MYSQL 数据库提交

mysql - 插入重复键并替换为不起作用

mysql - 选择客户在 mysql 中仅获得红色汽车(不是红色和绿色两者)