将下拉值保存到 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
下拉值通过android中的soap webservices保存在mysql数据库中