MySQL - 变量数与预准备语句中的参数数量不匹配

时间:2014-11-29 19:10:48

标签: php mysql

所以我有下面的查询运行完美,但我在标题中得到错误,我不明白为什么。也许有人可以帮忙。

查询:

$stmt = $mysqli->prepare("INSERT INTO paypal_log (product_name) VALUES ('".$_POST["product_name"]."')");
$stmt->bind_param('s', $product_name);
$stmt->execute();
$stmt->close();

错误:

  

PHP警告:mysqli_stmt :: bind_param():变量数量与第29行/home/triponsergiu/public_html/test/includes/paypal.php中预准备语句中的参数数量不匹配

谢谢。

2 个答案:

答案 0 :(得分:2)

将参数绑定到语句意味着在语句中填入“空白”的参数。要创建“空白”,请使用例如问号替换值。

$stmt = $mysqli->prepare('INSERT INTO paypal_log (product_name) VALUES (?)');
$stmt->bind_param('s', $product_name);
$stmt->execute();
$stmt->close();

这样,参数会自动转义(因此无法删除或下载整个数据库......)。

答案 1 :(得分:1)

$stmt = $mysqli->prepare("INSERT INTO paypal_log (product_name) VALUES (?)"); 
$stmt->bind_param('s', $_POST["product_name"]);