我尝试使用以下代码使用userid参数编辑数据库中的行。
但是使用代码我得到了这个错误:
您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便使用接近' SET firstname = IF(?<>'',?,firstname),SET surname = IF( ?<'第3行
我真的不确定问题是什么,因为一切都在SQL查询中按顺序查看。我已经尝试取出IF(?<>'',?),但它仍然会出错。我仔细检查了表中的所有列名是否正确。我究竟做错了什么?
<?php
include 'database_conn.php';
if(!$conn)
{
echo "Error connecting to database";
}
if (mysqli_connect_errno())
{
echo "<p>Connection failed:".mysqli_connect_error()."</p>\n";
}
$id = isset($_GET['userId']) ? $_GET['userId'] : NULL;
$newUsername = isset($_REQUEST['updateUsername']) ? $_REQUEST['updateUsername'] : NULL;
$newEmail = isset($_REQUEST['updateEmail']) ? $_REQUEST['updateEmail'] : NULL;
$newPassword = isset($_REQUEST['updatePassword']) ? $_REQUEST['updatePassword'] : NULL;
$newForename = isset($_REQUEST['updateForename']) ? $_REQUEST['updateForename'] : NULL;
$newSurname = isset($_REQUEST['updateSurname']) ? $_REQUEST['updateSurname'] : NULL;
$newDob = isset($_REQUEST['updateDob']) ? $_REQUEST['updateDob'] : NULL;
$sql = "UPDATE Users
SET username = IF(? <> '', ?, username),
SET firstname = IF(? <> '', ?, firstname),
SET surname = IF(? <> '', ?, surname),
SET email = IF(? <> '', ?, email),
SET password = IF(? <> '', ?, password),
SET dateofbirth = IF(? <> '', ?, dateofbirth)
WHERE id = ?";
$stmt = mysqli_prepare($conn, $sql)
or die(mysqli_error($conn));
mysqli_stmt_bind_param($stmt, "ssssssi", $newUsername, $newForename, $newSurname, $newEmail,
$newPassword, $newDob, $id)
or die(mysqli_error($conn));
mysqli_stmt_execute($stmt)
or die(mysqli_error($conn));
if($stmt)
{
echo "Details updated successfully";
}
else
{
die(mysqli_error($conn));
}
mysqli_close($conn);
?>
答案 0 :(得分:1)
MySQL&#34;更新&#34;仅使用以逗号分隔的一个 function capFunction() {
jQuery.get("CSCI-Classes.txt", function(data) {
var group=data.split("/n");
document.getElementById("testDisplay").innerHTML = group[1];
});
}
:
您的查询应为:
SET
并且看到您基于以下Q&amp; A,已经更改了它的语法:
根据您留给我的链接in the comments area。
你在评论中说这不是一个现场网站。但是,如果您决定使用此功能,请使用$query = "
UPDATE `users`
SET
`username` = IF(? <> '', ?, `username`),
`firstname` = IF(? <> '', ?, `firstname`),
`surname` = IF(? <> '', ?, `surname`),
`email` = IF(? <> '', ?, `email`),
`password` = IF(? <> '', ?, `password`),
`dateofbirth` = IF(? <> '', ?, `dateofbirth`)
WHERE `id` = ?
";
和password_hash()
。
参考文献:
由于存储纯文本密码很危险。
注意:密码列的长度必须为60+。该手册暗示255是一个不错的选择。