-1

テキスト入力フィールドと、情報を profile-updated.php に送信するドロップダウンを選択するフォームがあります。単純な UPDATE クエリとして機能しましたが、パラメーター化されたクエリにしようとしましたが、機能しません。エラーは発生しませんが、実際には何も更新されません。パラメータ化された SELECT または INSERT クエリのチュートリアルを行ったので、「$_POST['age'];」を使用して UPDATE のニーズに合わせようとしたときに、おそらく何かを台無しにしました。部分。どんな助けでも大歓迎です。

試行されたパラメーター化されたクエリ コードは次のとおりです。

$age = $_POST['age'];
$gender = $_POST['gender'];
$videourl = $_POST['videourl'];
$soundcloud = $_POST['soundcloud'];
$about = $_POST['about'];
$facebook =  $_POST['facebook'];
$twitter = $_POST['twitter'];

$stmt = $con->stmt_init();
if ($stmt->prepare("UPDATE Users1 (age, gender, videourl, soundcloud,
about, facebook, twitter) VALUES (?, ?, ?, ?, ?, ?, ?) WHERE email = '" .     $_POST['email'] . "' ")) {
$stmt->bind_param("sssssss", $age, $gender, $videourl, $soundcloud, $about, $facebook, $twitter);
   $stmt->execute();
   $stmt->close();
}
$con->close();

正常に機能した古い更新コードは次のとおりです。

$sql = mysqli_query($con, "UPDATE Users1
SET age = '" . $_POST['age'] . "',
gender = '" . $_POST['gender'] . "',
videourl = '" . $_POST['videourl'] . "',
soundcloud = '" . $_POST['soundcloud'] . "',
about = '" . $_POST['about'] . "',
facebook = '" . $_POST['facebook'] . "',
twitter = '" . $_POST['twitter'] . "',
WHERE email = '" . $_POST['email'] . "'

");
4

1 に答える 1

0

update ステートメントの構文が間違っていると思います。「古い更新コード」は正しいものを使用しています。

その構文は、'insert' ステートメントにより適しています。

試す:

$stmt->prepare( "update users1 set age = ?, gender = ?, ... where email = ?" );
$stmt->bind_param( ... , $_POST[ 'age' ] );

等々。

于 2013-09-05T16:00:08.757 に答える