为什么会出现此错误:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中出错;检查与MySQL服务器版本对应的手册,以便在第1行的''附近使用正确的语法?
<?php
include'model.php';
global $db;
try {
$sql ='SELECT accounts.username '
. 'FROM accounts '
. 'WHERE accounts.username = '
.$_POST[username];
$stmt = $db->prepare($sql);
$stmt->execute();
$navList = $stmt->fetchAll();
$stmt->closeCursor();
header('location: ./view_cms.php');
} catch (PDOException $exc) {
echo $exc->getMessage();
// header('location: ./view_error.php');
exit;
}
?>
答案 0 :(得分:1)
因为您需要在WHERE
子句中用单引号括起字符串。您还需要使用带引号的字符串键访问$_POST
条目:
$sql = "SELECT accounts.username ".
"FROM accounts ".
"WHERE accounts.username = '".$_POST["username"]."'";
另外,这就是为什么基于PHP的网络软件名声不好的原因。为了天堂的缘故,消毒你的投入!您的prepare
语句没有做任何事情,因为您没有使用参数(您的语句不是预备语句)。