2013-04-06 76 views
1

忍着我发现有很多关于这个错误的帖子。但我已经通过他们看了,似乎无法找到解决我的特定问题。警告:mysqli_stmt :: bind_param()变量的数量与预准备语句中的参数数量不匹配

我试过“isi”,“sss”和“sii”不起作用。不知道要做什么帮助会很好。

不太确定在哪里使用var_dump();了解更多关于我的问题的信息。我对PHP非常陌生,知道这也会有很大的帮助。

感谢您的支持!对于重复的话题感到抱歉。

代码:

<tr> 
      <form action="Voting_action.php" method="post"> 
      <td><br /> 
       <input type="submit" class="buttontable1" value="<?php echo $random; ?>" name="name"/> 
      </td> 
       </form> 
       <form action="Voting_action.php" method="post"> 
      <td><br /> 
       <input type="submit" class="buttontable1" value="<?php echo $random3; ?>" name="name"/> 
      </td> 
       </form> 
     </tr> 
     <tr> 
      <form action="Voting_action.php" method="post"> 
      <td><br /> 
       <input type="submit" class="buttontable1" value="<?php echo $random6; ?>" name="name"/> 
      </td> 
       </form> 
       <form action="Voting_action.php" method="post"> 
      <td><br /> 
       <input type="submit" class="buttontable1" value="<?php echo $random4; ?>" name="name"/> 
      </td> 
       </form> 
     </tr> 
     <tr> 
      <form action="Voting_action.php" method="post"> 
      <td><br /> 
       <input type="submit" class="buttontable1" value="<?php echo $random5; ?>" name="name"/> 
      </td> 
       </form> 
       <form action="Voting_action.php" method="post"> 
      <td><br /> 
       <input type="submit" class="buttontable1" value="<?php echo $random2; ?>" name="name"/> 
      </td> 
</tr> 

<?php 
include ('login-home.php'); 
$mysqli = new mysqli("", "", "", ""); 
if ($mysqli->connect_error) { 
    echo "Failed to connect to MySQL: (" . $mysqli->connect_error . ") " . $mysqli->connect_error; 
} 

if (!($stmt = $mysqli->prepare("INSERT INTO table(id, name, votes) VALUES (id, '".$_POST['name']."', '".$votes."')"))) { 
    echo "Prepare failed: (" . $mysqli->error . ") " . $mysqli->error; 
} 
$id = 1; 

这条线:

if (!$stmt->bind_param("isi",$id, $_POST['name'], $votes)) { 
    echo "Binding parameters failed: (" . $stmt->error . ") " . $stmt->error; 
} 

if (!$stmt->execute()) { 
    echo "Execute failed: (" . $stmt->error . ") " . $stmt->error; 
} 
$stmt->close(); 
?> 

回答

1

您所查询的制剂中含有零点的参数,因为你只是把这些值在那里,完全击败预处理语句的目的。相反,试试这个:

if (!($stmt = $mysqli->prepare("INSERT INTO table(id, name, votes) VALUES (?,?,?)"))) { 

然后按照原样继续。

+0

谢谢你工作得很好! – vince 2013-04-06 23:32:59

相关问题