我正在尝试在php中创建多个照片上传脚本。除了更新查询之外,所有似乎都正常工作。尝试在phpmyadmin中手动更新它并且不更新持续存在的问题不知道该做什么可以任何专家帮助我解决这个问题。
这是更新查询:
try {
$sql1="update photos
set
filename='{$db_file_name}',
upload_date=now() where user='{$_SESSION['id']}' ";
$st1=$conn->prepare($sql1);
$st1->execute();
}
catch (Exception $exc) {
echo $exc->getMessage();
}
user
是一个关键词,更好地利用它的反引号。见:https://dev.mysql.com/doc/refman/8.0/en/keywords.html
try {
$sql = "UPDATE `photos`
SET `filename` = :filename,
`upload_date` = NOW()
WHERE `user` = :sess_id";
$stmt = $conn->prepare($sql);
$stmt->bindValue(":sess_id", $_SESSION['id']);
$stmt->bindValue(":filename", $db_file_name);
$stmt->execute();
} catch (....) {
....
}
或许更好的是,不要使用关键字作为列名,请尝试使用userId
。
首先,我会再次验证您使用的所有变量是否正确(照片,文件名等)。即将它们与您的表格逐字比较。如果这看起来不错,那么更多的信息也不会坏。你有任何错误吗?如果是这样,他们说什么?到目前为止你还尝试了什么?
此外,我建议你的代码更容易阅读:
/* create a prepared statement */
if ($st1 = $conn->prepare("UPDATE `photos` SET `filename` = ?, `upload_date` = ? WHERE `user` = ?")) {
/* bind parameters (ssi = string, string, integer)*/
$st1->bind_param("ssi", $db_file_name, now(), $_SESSION['id']);
/* execute query */
$st1->execute();
/* close statement */
$st1->close();
}