Php MySQL中的多查询插入
我在尝试获取第一条SQL语句的results值时遇到问题,因此我可以在第二条语句中使用in 我的第一句话是:Php MySQL中的多查询插入,php,mysql,insert,mysql-insert-id,Php,Mysql,Insert,Mysql Insert Id,我在尝试获取第一条SQL语句的results值时遇到问题,因此我可以在第二条语句中使用in 我的第一句话是: $query = "SELECT restaurantid FROM restaurant WHERE username = '$_SESSION[username]'"; $result=mysql_query($query); if(!$result) { echo "Error: " . mysql_error() . "Query: " . $query;
$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;
}
然而,我的问题在于,每当我尝试并执行这段代码时,我的第二条语句似乎并没有从第一个查询中获取所需的前一个结果值。只是希望有人能帮我了解一下情况。我是新的编码,我几乎有这个正确的,所以所有的帮助和建议将不胜感激!谢谢:)您可以将查询合并为1
INSERT INTO deal (dname, description, restaurantid)
SELECT '$name', '$desc', restaurantid
FROM restaurant
WHERE username = '$_SESSION[username]'
顺便说一句,这对于SQL注入来说非常容易。请参见首先,您不应该使用Mysql,因为它已经并且容易受到SQL注入的攻击,请改用 通过使用Mysql,查询应该类似于这样的
“插入到交易(dname,description,restaurantid)值(“$name”,“$desc”,“$restaurantid”)”
通过使用Mysqli,它应该是这样的:
$stmt = $mysqli -> prepare("INSERT INTO deal (dname, description, restaurantid) VALUES (?,?,?)"
$stmt -> bind_param('ssi', $name, $desc, $restaurantId);
$stmt -> execute();
如果
$\u SESSION[username]
是新插入的记录,您可能可以将restaurantid分配给mysql\u insert\u id()代码>紧接着mysql\u查询(“插入餐厅值(某些值)”)
或者如果不是
$result = mysql_query($sql) or die(mysql_error());
while($rows = mysql_fetch_array($result))
{
$restaurantid = $rows['restaurantid'];
}
Hi@juergend-感谢您的快速响应-请看我之前无法合并这两条语句的原因,因为当第一条语句单独执行时,我得到了一个“资源Id 3”结果,在进一步调查后,我发现需要将其分解为mysql_free_结果,以获得引用值!我目前正在阅读有关SQL注入的书籍,正如我所说的,我正在学习,所以我尝试先学习基础知识,然后从那里开始:)Hi@Oskwish,我目前正在阅读有关转换的书籍,但正如我所说,我对编码还不熟悉,对MySQL也有一些经验,所以我现在使用它只是为了在转换到Mysqli之前创建流程背后的逻辑。我做了您建议的更改,但是通过插入“$row['restaurantid']”我得到了一个字符串错误,所以我删除了restaurantid周围的逗号,它仍然没有发现有任何值=/拥有它!是的,太完美了,非常感谢你的帮助!!我是gunna,现在就去把它告诉MySQLi,教给我自己!非常感谢!!!:)
$result = mysql_query($sql) or die(mysql_error());
while($rows = mysql_fetch_array($result))
{
$restaurantid = $rows['restaurantid'];
}