【问题标题】:Basic insert into SQL基本插入 SQL
【发布时间】:2013-10-14 19:58:30
【问题描述】:

我知道这真的很简单,我已经有几年没接触过 PHP 和 SQL了。

这行得通

$mysqli->query("INSERT INTO sonyCES2013.registration (id, firstName, lastName, eMail, telephone, outlet, comfirm, preferTime, date) 值 (NULL,Cat, '凯瑟琳', “Cat@gmail.com”、“123-456-4561”、“一些文字”、“是”、“下午 4:00” ,'1/09/14')");

这不起作用

$mysqli->query("INSERT INTO sonyCES2013.registration (id, firstName, lastName, eMail, telephone, outlet, comfirm, preferTime, date) 价值观 (NULL,{$fName},{$lName},{$eMail},{$telephone},{$outlet},{$comfirmation},{ $preferTime},{$day})");

帮助,是的,我确实检查了变量是否为空,并且我确实尝试在每个 {} 之间不使用 ``

【问题讨论】:

  • 始终使用绑定变量。
  • 你需要加引号。
  • 您需要在字符串周围添加引号...'{$fname}', ... 但看起来您真的为 sql 注入敞开了大门
  • 如有疑问,请打印出您的 SQL 语句,这样更容易阅读。但是正如郁闷所说,你需要查找SQL注入。
  • 这是一个非常棒的提示,可以打印出语句并将其与 phpAdmin 生成的语句进行比较。我确实使用正则表达式验证了我的所有查询,我想这还不够。我会调查的。

标签: php sql


【解决方案1】:

您需要在变量中添加 ' ' 以使解释者能够理解您正在尝试做什么(在这种情况下,传递一些 php 变量作为参数)

使用它,看看它是否有效:

 $mysqli->query("INSERT INTO sonyCES2013.registration (id, firstName, lastName, 
                 eMail, telephone, outlet, comfirm, preferTime, date) VALUES
               (NULL,'$fName','$lName','$eMail','$telephone','$outlet',
                '$comfirmation','$preferTime','$day')");

【讨论】:

    【解决方案2】:

    它不会这样工作,因为生成的 SQL 看起来像这样:

    $mysqli->query("INSERT INTO sonyCES2013.registration (id, firstName, lastName, eMail, telephone, outlet, comfirm, preferTime, date) VALUES (NULL,Cat, Catherine, Cat@gmail.com, 123-456-4561, Some Text, Yes, 4:00pm ,1/09/14)");
    

    请注意字符串周围缺少单引号,这会使 SQL 无效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-28
      • 1970-01-01
      相关资源
      最近更新 更多