【发布时间】:2014-09-07 16:45:36
【问题描述】:
我正在尝试将值从 html 表单 <select> 列表传递到 SQL 表。我已经尝试了几件事,但无法让它发挥作用。
HTML
<select class="select-list">
<option value="volvo" class="selectval">
Volvo
</option>
<option value="saab" class="selectval">
Saab
</option>
<option value="mercedes" class="selectval">
Mercedes
</option>
<option value="audi" class="selectval">
Audi
</option>
</select>
PHP
$name = filter_var($_POST['name'],FILTER_SANITIZE_STRING);
$email = filter_var($_POST['email'],FILTER_VALIDATE_EMAIL);
$email = filter_var($email,FILTER_SANITIZE_EMAIL);
$phone = filter_var($_POST['phone'],FILTER_SANITIZE_STRING);
if (empty ($name)|| empty ($email) || empty ($phone) || !isset($select)) {
return;
} else {
mysql_connect('localhost' , 'root' , '');
mysql_select_db('show_express');
$name = clean_inputs($name);
$email = clean_inputs($email);
$phone = clean_inputs ($phone);
$sql = "INSERT INTO clients(id,name,email,phone,bands) ";
$sql .= "VALUES('','$name','$email','$phone','$select')";
mysql_query($sql);
if (mysql_affected_rows()) {
echo true;
}
}
function clean_inputs($input) {
$clean = mysql_real_escape_string(stripcslashes($input));
return $clean;
}
【问题讨论】:
-
我知道这不是答案,但你真的应该只使用 PDO,尽管你尝试清理输入,但你的脚本仍然容易受到注入(你没有清理每个可能被注入的变量)。是否显示错误或您未检查的 mysql_error?
-
Please, don't use
mysql_*functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解prepared statements,并使用PDO 或MySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial.