mysqli bind_param, выдающий ошибку: (1210) Неверные аргументы для mysql_stmt_execute

У меня точно такой же код отлично работает на другом сервере:

<code>$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();
</code>

Этот код дает мне следующий вывод: Ошибка выполнения: (1210) Неправильные аргументы для mysql_stmt_execute

Если я изменю эти две строки:

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

к этому:

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

... тогда обновление прошло успешно, и я не получил никакой ошибки.

Does anyone know why I can't bind more than one param in this code?

У меня был этот код отлично работает на 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

Ответы на вопрос(4)

Ваш ответ на вопрос