未捕获的PDOException:SQLSTATE [42000]:语法错误或访问冲突

时间:2019-07-06 16:23:37

标签: php mysql sql pdo

我不知道为什么会出现错误

  

致命错误:未捕获的PDOException:SQLSTATE [42000]:语法错误或   访问冲突:1064您的SQL语法错误;检查   与您的MySQL服务器版本相对应的手册   在第1行中的“预处理器”附近使用的语法   /var/www/html/phpquiz/result.php:17

在执行准备好的语句时即执行时发生错误 $cho->execute();

<?php
session_start();
if(!isset($_SESSION['score'])){
    $_SESSION['score'] = 0;
}

if(isset($_POST['submit'])){
    $arr = array("a", "b", "c", "d", "e");
    for($i = 1; $i < 6; $i++){
        $text = $_POST['que_'.$arr[$i-1]];
        echo "$text<br> ";
        $cho = $pdo->prepare("SELECT id from choices where `text` = $text");
        $cho->execute();
        $r = $cho->fetch(PDO::FETCH_ASSOC);
        echo $r;
    }
}

?>

1 个答案:

答案 0 :(得分:2)

您的准备​​声明是错误的。您需要使用占位符替换PHP变量,然后将实际值传递给execute函数。

$cho = $pdo->prepare("SELECT id FROM choices WHERE `text` = ?");
$cho->execute([$text]);
$r = $cho->fetch(PDO::FETCH_ASSOC);