天天看點

php bind_param,php – 在mysqli bind_param中綁定動态變量

當我嘗試下面的代碼時,它會給我一個警告

mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables

$stmt = $mysqli->prepare('SELECT * FROM users WHERE lname = ? AND fname = ?');

$type = "ss";

$param = array("Maq","bool");

$params[] = &$type;

$params[] = &$param;

call_user_func_array( array($stmt, 'bind_param'), $params );

我真的不知道為什麼會發生這種情況我在stackoverflow中讀了很多相同的标題問題,但有些人用逗号分隔類型或需要更多類型但在我的情況下我認為它是正确的,但為什麼我一直在收到警告?

解決方法:

$stmt = $mysqli->prepare('SELECT * FROM users WHERE lname = ? AND fname = ?');

$stmt->bind_param('ss', $param[0], $param[1]);

$stmt->execute();

//other version

$stmt = $mysqli->prepare('SELECT * FROM users WHERE lname = ? AND fname = ?');

$type = "ss";

$names = array("Maq", "bool");

$params = array(&$type, &$names[0], &$names[1]);

call_user_func_array(array($stmt, 'bind_param'), $params);

标簽:php,mysqli

來源: https://codeday.me/bug/20190830/1766292.html