簡體   English   中英

運行准備好的語句(MySQL / PHP)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM