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