![](/img/trans.png)
[英]How do I convert this mysqli array statment into a mysqli prepared statement?
[英]How can i convert this function to prepared statment?
我有这个 ajax 请求,它可以毫无问题地将数据插入数据库,但是当我尝试将它包装到准备好的语句时不起作用!
$number = count($_POST["title"]);
if($number > 0)
{
for($i=0; $i<$number; $i++)
{
if(trim($_POST["title"][$i] != ''))
{
$sql = "INSERT INTO navigations (secret_api_key, title, link) VALUES ('".$_SESSION["secret_api_key"]."', '".mysqli_real_escape_string($db, $_POST["title"][$i])."', '".mysqli_real_escape_string($db, $_POST["url"][$i])."')";
mysqli_query($db, $sql);
}
}
echo "Data Inserted";
} else {
echo "Enter Name";
}
这是我试过的准备好的声明:
$number = count($_POST["title"]);
if($number > 0)
{
for($i=0; $i<$number; $i++)
{
if(trim($_POST["title"][$i] != ''))
{
$sql = $db->prepare("INSERT INTO navigations (secret_api_key, title, link) VALUES (?, ?, ?)");
$sql->bind_param("sss", '.$_SESSION["secret_api_key"].", ".$_POST["title"][$i].", ".$_POST["url"][$i]."');
$sql->execute();
}
}
echo "Data Inserted";
} else {
echo "Enter Name";
}
如果“.mysqli_real_escape_string($db, $_POST["url"][$i])”,也许会解决。 转换
您肯定会越来越近,但您必须非常密切地注意 PHP 语法。 这是编程,每个字符都很重要。
这是一个重新设计的版本:
$sql = $db->prepare("INSERT INTO navigations (secret_api_key, title, link) VALUES (?, ?, ?)");
$sql->bind_param('sss', $_SESSION["secret_api_key"], $_POST["title"][$i], $_POST["url"][$i]);
$sql->execute();
请注意,您发送的是裸参数,而不是字符串,或者是字符串的一部分,或者是带有剩余连接位的字符串。 只是常规变量做常规变量的事情。
如果您没有使用语法高亮编辑器,或者您没有打开该功能,那么它可以极大地帮助您识别此类问题。 您可以在代码片段中看到,仅根据颜色,语法看起来是错误的。 大多数开发人员发现这对于防止简单但容易犯的错误非常宝贵。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.