将下拉值保存到 PHP MySQL

Posted

技术标签:

【中文标题】将下拉值保存到 PHP MySQL【英文标题】:Saving DropDown Value to PhpMySQL 【发布时间】:2015-06-18 07:42:31 【问题描述】:

我想知道如何将下拉选择值保存到数据库中,我收到一条错误消息“输入无效:您的 SQL 语法有错误;请查看与您的 mysql 服务器版本对应的手册以获取正确的语法来使用 near。”到我实现 Gender DropDown 时。

这是代码

if(empty($_POST['Gender']))
$Gender = '';
$flag=1;
 else
$Gender = ($_POST['Gender']);

然后选择:

<select id="Gender" name="Gender" class="input-xlarge">
<option>Select Gender</option>
<option value="Male">Male</option>
<option value="Female">Female</option>

输入:

$sql = " INSERT INTO User(FirstName, LastName, Gender, UserName, Password, reEnterPassword, EmailAdd, reEnterEmailAdd)
VALUES ('$FirstName', '$LastName', '$Gender', $UserName', '$EPassword', '$EreEnterPassword', '$EmailAdd', '$reEnterEmailAdd'); ";

【问题讨论】:

echo $sql 显示什么? 尝试保存$Gender = NULL中的NULL;而不是 $Gender = ''; 【参考方案1】:

在 $UserName 附近使用遗漏的单引号,

试试这个

$sql = " INSERT INTO User(FirstName, LastName, Gender, UserName, Password, reEnterPassword, EmailAdd, reEnterEmailAdd)
VALUES ('$FirstName', '$LastName', '$Gender', '$UserName', '$EPassword', '$EreEnterPassword', '$EmailAdd', '$reEnterEmailAdd'); ";

【讨论】:

【参考方案2】:

问题在于你的 php mysql select 语句的形成方式:

$sql = " INSERT INTO User(FirstName)
VALUES ('$FirstName', '$LastName'); ";

从双引号内的所有变量名中删除单引号。

或在开头使用单引号并将变量括起来,如下所示:

' . $FirstName . '

这样就可以了:

$sql = ' INSERT INTO User(FirstName, LastName, Gender, UserName, Password, reEnterPassword, EmailAdd, reEnterEmailAdd)
VALUES ('.$FirstName.', '.$LastName.', '.$Gender.', '.$UserName.', '.$EPassword.', '.$EreEnterPassword.', '.$EmailAdd.', '.$reEnterEmailAdd.')';

还请查看此答案:Single quotes or double quotes for variable concatenation?

附:您的应用程序完全容易受到 sql 注入的攻击。您应该研究如何清理用户输入。

【讨论】:

"..使用双引号定义句子,然后你在变量中使用单引号(例如:'$FirstName')问题是这样php不会识别$ FirstName 作为变量,而是将其视为字符串”:False。 $FirstName 将被识别为变量,因为您将整个句子放在双引号中。 @googlelord 欢迎您!如果有帮助,请不要忘记将其标记为已接受的答案 @ArtemideInnominato 它不会将“$FirstName”识别为变量。 @helloworld 我又遇到了同样的问题,在另一个页面上。我不知道是什么原因造成的。无效输入:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的“Cruz, 0935 400 7214, brcruz@banawesports.com, Wash, Meguia Wax)”附近使用正确的语法 INSERT INTO Supplier(name, cnum, email, service , prod) VALUES (Bryan Cruz, 0935 400 7214, brcruz@banawesports.com, Wash, Meguia Wax) $sql = ' INSERT INTO Supplier(name, cnum, email, service, prod) VALUES ('.$name.', '.$cnum.', '.$email.', '.$service.', '.$prod.')'; @googlelord 您能否提出一个问题,提供有关该问题的更多详细信息。然后在这里粘贴一个链接,以便我检查它,如果我能做任何事情,我很乐意提供帮助【参考方案3】:
$sql = " INSERT INTO User(FirstName, LastName, Gender, UserName, Password, reEnterPassword, EmailAdd, reEnterEmailAdd)
VALUES ('$FirstName', '$LastName', '$Gender', '$UserName', '$EPassword', '$EreEnterPassword', '$EmailAdd', '$reEnterEmailAdd')";

1) $UserName 前缺少单引号,

2) 圆括号完成后删除半列,

3) 尝试使用“。”连接运算符,因此您可以生成完美的变量名称, 喜欢('.$FirstName.','.$LastName.','.$Gender.'等等)

【讨论】:

以上是关于将下拉值保存到 PHP MySQL的主要内容,如果未能解决你的问题,请参考以下文章

无法将插入的值保存到 tableview 和 mySQL - PHP

php表单mysql更新保存数据

将多个下拉值保存到 SQL 数据库的一列中

下拉值通过android中的soap webservices保存在mysql数据库中

通过 php 将 Annotorius 注释数据从 Image Slider 保存到 mySQL

使用 Javascript 将下拉列表的多项选择保存到变量