这个问题在这里已有答案:
我准备好的陈述并不好。我正在尝试做一个简单的测试,但遇到了错误。我正在尝试添加参数,我已经做了一些研究,其中没有一个帮助我理解我哪里出错了。
我已经尝试过在PHP网站和Stackoverflow上查找。这是一个测试项目。
$stmt = $con->prepare('SELECT username, rank, id, steamid, avatar FROM users WHERE id="$uid"');
$stmt->bind_param('i', $uid);
$stmt->execute();
$stmt->bind_result($username, $rank, $id, $steamid, $avatar);
$stmt->fetch();
$stmt->close();
我的预期结果是它只选择使用“WHERE”调用指定的行。我的实际结果是这个错误:mysqli_stmt :: bind_param():变量数与预准备语句中的参数数量不匹配
您绑定了一个变量,但在准备好的语句中没有参数。将PHP变量插值为字符串不是参数。
错误:零参数,只是字符串插值:
$stmt = $con->prepare('SELECT username, rank, id, steamid, avatar FROM users
WHERE id="$uid"');
右:一个参数:
$stmt = $con->prepare('SELECT username, rank, id, steamid, avatar FROM users
WHERE id=?');
如果它是PDO那么它是bindParam
而不是bind_param
。
$stmt = $con->prepare('SELECT username, rank, id, steamid, avatar FROM users WHERE id = :uid);
$stmt->bindParam(':uid', $uid, PDO::PARAM_INT);
$uid = 'value here';
$stmt->execute();
$stmt->close();
对于mysqli
$stmt = $con->prepare('SELECT username, rank, id, steamid, avatar FROM users WHERE id = ?);
$stmt->bind_param('i', $uid);
$uid = 'value here';
$stmt->execute();
$stmt->close();