次のコードを使用して、データベースの行をユーザIDパラメータを使用して編集しようとしています。PHPのSQLクエリで複数のパラメータ
しかし、私はこのエラーを取得するコードで:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET firstname = IF(? <> '', ?, firstname), SET surname = IF(? <' at line 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);
?>
あなたはそのSQL構文で正確に何をしようとしていますか? 'IF(?<> ''、?、username)'はどこにでもあります。あなたは '$ _REQUEST ['updateUsername'])'と同じユーザー名を設定しようとしていますか? ** **この既存の回答**](http://stackoverflow.com/a/6514730/2341603)をチェックすることを強くお勧めします**。 –
それはUPDATEの仕組みではありません。 RTM https://dev.mysql.com/doc/refman/5.7/en/update.html –
さらに、これで生きていないことを望みます。プレーンテキストのパスワードを保存する際に。 –