【问题标题】:Saving DropDown Value to PhpMySQL将下拉值保存到 PHP MySQL
【发布时间】: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 = '';

标签: php mysql database xampp


【解决方案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.'等等)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      • 2013-07-15
      相关资源
      最近更新 更多