本文介绍了mysqli bind_param 给出错误:(1210) mysql_stmt_execute 的参数不正确的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个完全相同的代码在另一台服务器上运行良好:

I have this exact same code working great on another server:

$mysqli_Cxn = new mysqli($SQL_HOST,$SQL_USER,$SQL_PASS,$SQL_DB);
if($mysqli_Cxn->connect_errno){
echo 'Unable to connect!!';
exit();
}

$userID=12345;
$userFirstName = 'Charley';
$userLocale = 'en_US';

$sql = "UPDATE userProfile SET userFirstName=?, userLocale=? WHERE id=?";

if($stmt = $mysqli_Cxn->prepare($sql)){
 if(!$stmt->bind_param('ssi',$userFirstName,$userLocale,$userID)){
  echo "<br/><br/>Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
 }
 if($stmt->execute()){
  totalAffected=$stmt->affected_rows;
  if($totalAffected>=1){
   echo '<br/><br/>UPDATE OK: Affected rows = '. $totalAffected;
  }
 }else{
  echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
 }
}
$stmt->close();

该代码给了我以下输出:执行失败:(1210) mysql_stmt_execute 的参数不正确

That code gives me the following output:Execute failed: (1210) Incorrect arguments to mysql_stmt_execute

如果我改变这两行:

$sql = "UPDATE userProfile SET userFirstName=?, userLocale=? WHERE id=?";
$stmt->bind_param('ssi',$userFirstName,$userLocale,$userID);

为此:

$sql = "UPDATE userProfile SET userFirstName=?, userLocale='en_US' WHERE id=12345";
$stmt->bind_param('s',$userFirstName);

...然后更新成功,我没有收到任何错误.

...then the Update is successful and I don't get any error.

有谁知道为什么我不能在这段代码中绑定多个参数?

我让这段代码在 Centos 4.9、PHP 5.3.3、MySQL 5.0.91/5.0.91-community-log 上完美运行

I had this code running perfectly on a Centos 4.9, PHP 5.3.3, MySQL 5.0.91/5.0.91-community-log

我需要在我当前的服务器上运行它,它是 Centos 6.2、PHP 5.3.10、MySQL 5.0.95-community-log

I need to run it on my current server which is Centos 6.2, PHP 5.3.10, MySQL 5.0.95-community-log

推荐答案

我做了一点研究,结合您的 GCC 版本和您使用的优化标志,这似乎是 MySQL 源中报告的错误.如果您无法更改 MySQL 版本,请尝试重新编译 MySQL,并将 -fno-strict-aliasing 添加到您的 CFLAGS.

I did a little research, and it seems like a reported error in the MySQL source in combination with your version of GCC and the optimization flags you use.If you can't change the MySQL version, try recompile MySQL with added -fno-strict-aliasing to your CFLAGS.

参见 http://bugs.mysql.com/bug.php?id=48284 了解更多详情

这篇关于mysqli bind_param 给出错误:(1210) mysql_stmt_execute 的参数不正确的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-26 08:25
查看更多