我正在处理一个项目,我需要将布尔值设置为isHere为true(1) 当它找到相应的ID时。但是我似乎无法更新数据库。我可以从数据库中选择。
我有两个问题。第一:
$handle = @fopen("../smartriders.txt", "r");
if ($handle)
{
while (($smartRider = fgets($handle, 255)) !== false)
{
if($update = $conn->query("UPDATE members SET isHere = 1 WHERE SmartRiderID = ?", $smartRider))
{
print("update successful");
}
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
这会产生警告:
警告:mysqli :: query()期望参数2为整数,在第14行的index.ph中给出字符串。
第14行:
if($update = $conn->query("UPDATE members SET isHere = 1 WHERE SmartRiderID = ?", $smartRider))
第二个问题: 即使我手动键入数据库中的smartRider,也不会更新任何内容。
真的很感激任何帮助。
答案 0 :(得分:0)
如果你参考mysqli_query
手册 - 你会看到这个函数的第二个参数是int $resultmode
。
请参阅 - int
。它的目的是定义返回结果的结构。因此,将$smartRider
传递给query()
无用。
query
函数无法使用准备好的语句。
准备好的陈述是prepare()
:
$stmt = $mysqli->prepare('UPDATE members SET isHere = 1 WHERE SmartRiderID = ?');
$stmt->bind_param('s', $smartRider);
$res = $stmt->execute();
对于execute()
的结果,请参阅http://php.net/manual/en/mysqli-stmt.execute.php。
答案 1 :(得分:-1)
问题1:警告:mysqli :: query()期望参数2为整数,在第14行的index.ph中给出字符串。
溶液:
if($update = $conn->query("UPDATE members SET isHere = 1 WHERE SmartRiderID = " . $smartRider))