[英]Running a prepared statement (MySQL/PHP)
這是我第一次使用准備好的語句,但是遇到了問題。 當我運行以下代碼時,我收到一條錯誤消息,內容為:
警告:mysqli_stmt_bind_param()[function.mysqli-stmt-bind-param]:類型定義字符串中的元素數量與第49行上...中的綁定變量數量不匹配
第49行是下面的mysqli_stmt_bind_param語句。 似乎該語句中的字符串數(“ ssssss”)與正確的字符串數匹配,所以我有點不知所措。
<?php
$var1 = $_POST['var1'];
$var2 = $_POST['var2'];
$var3 = $_POST['var3'];
$var4 = $_POST['var4'];
$var5 = $_POST['var5'];
$var6 = $_POST['var6'];
if (!empty($var1)&&!empty($var2)&&!empty($var3)
&&isset($var4, $var5, $var6));
require_once 'connect.inc.php';
$query = "INSERT INTO tablename (var1, var2, var3, var4, var5, var6)
VALUES ('$var1','$var2','$var3','$var4','$var5', '$var6')";
$stmt = mysqli_prepare($link, $query);
mysqli_stmt_bind_param($stmt, "ssssss", $var1, $var2, $var3, $var4, $var5,
$var6);
mysqli_stmt_execute($stmt);
if (mysqli_stmt_affected_rows($stmt)==1);
mysqli_stmt_close($stmt);
$result = mysqli_query($link, $query);
if ($result) {
echo 'Thank you for your submission.';
}
else {
echo 'We were unable to process your information.'.mysqli_error($link).'
Please ensure all required fields were filled out.;
}
mysqli_close($link);
?>
任何幫助深表感謝! 謝謝! 順便說一句,我確實得到了“謝謝您的提交”。 信息。
將查詢更改為:
$query = "INSERT INTO tablename (var1, var2, var3, var4, var5, var6)
VALUES (?,?,?,?,?, ?)";
告訴您設置綁定參數。
問題不在於格式,是因為您沒有要綁定的參數。 參數應使用?
作為查詢中的占位符;
$query = "INSERT INTO tablename (var1, var2, var3, var4, var5, var6)
VALUES ('$var1','$var2','$var3','$var4','$var5', '$var6')";
應該
$query = "INSERT INTO tablename (var1, var2, var3, var4, var5, var6)
VALUES (?, ?, ?, ?, ?, ?)"; // <-- six place holders for the parameters
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.