【问题标题】:php mysql insert statement using variables使用变量的php mysql插入语句
【发布时间】:2015-04-24 04:12:59
【问题描述】:

我的 php 代码抛出错误如下:

$stmt = $con->prepare('INSERT INTO listOfRides (address, time) VALUES 
('$address', '$time')') ;

我查看了其他帖子,似乎我正确使用了变量,并在它们周围加上了单引号,但是在访问 URL 时显示以下错误:

Parse error: syntax error, unexpected T_VARIABLE in /home/gbidjght/public_html
/insertRide.php on line 79

感谢任何帮助

【问题讨论】:

标签: php mysql sql-insert


【解决方案1】:

如果你转义了单引号,你最终会在你的数据库中插入字符串文字“$address”和“$time”:

$stmt = $con->prepare('INSERT INTO listOfRides (address, time) VALUES (\'$address\', \'$time\')');

但是假设它们应该是变量,您应该在 SQL 语句周围使用双引号,以允许 PHP 实际将您的变量解析为它们的值:

$stmt = $con->prepare("INSERT INTO listOfRides (address, time) VALUES ('$address', '$time')");

话虽如此,既然你已经在准备你的陈述,为什么不直接使用占位符呢?这将是一种更安全的方式来防止 SQL 注入。

$stmt = $con->prepare("INSERT INTO listOfRides (address, time) VALUES (?, ?)");
$stmt->execute(array($address, $time));

【讨论】:

  • 以牙还牙?谢谢@Fred-ii-
  • 嗯,有点眨眼。然而,作为关于元的最新讨论话题,真相可能是最近的答案质量。不知道你有没有看过,不过这几天有点热。这是关于这些 “试试这个....” 和插入代码类型的答案。我不喜欢这一点,Stack 上的许多成员经常提供帮助并提供答案/解决方案。我已经成为 VLQ 被拒绝标志的受害者,而不是一个快乐的露营者。如果我们不向他们展示“如何”捕鱼,人们将如何学会如何养活自己。 ;-) 干杯
【解决方案2】:

把外引号改成双引号

$stmt = $con->prepare("INSERT INTO listOfRides (address, time) VALUES 
('$address', '$time')") ;

【讨论】:

    【解决方案3】:

    不能把mysql'放到php'中

    使用这个

    $stmt = $con->prepare("INSERT INTO listOfRides (address, time) VALUES 
    ('$address', '$time')") ;
    

    【讨论】:

      【解决方案4】:

      由于's,错误即将到来。添加" 而不是'。试试这个 -

      $stmt = $con->prepare("INSERT INTO listOfRides (address, time) VALUES ('$address', '$time')") ;
      

      【讨论】:

        【解决方案5】:
        $stmt = $con->prepare("INSERT INTO `listOfRides` (`address`, `time`)
         VALUES 
        ($address, $time)") ;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-09-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-07
          • 2016-03-13
          相关资源
          最近更新 更多