参数化查询文本输入

时间:2013-09-05 15:42:24

标签: php mysqli

我有一个带有文字输入字段和表格的表单。选择向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'] . "'

");

1 个答案:

答案 0 :(得分:0)

我认为更新语句的语法不正确。您的“旧更新代码”使用正确的代码。

该语法更适合'insert'语句。

尝试:

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

等等。