mySQL php PDO错误1054
昨天我有一个关于mySQL语法的问题。这就是如何拥有多个WHERE语句。我得到了1054。它是“字段列表中的未知列”。我已经找到了如何让代码执行,但是我无法让它以编程方式工作(我必须在后面加入一些引号) 这是我对php的输出:mySQL php PDO错误1054,php,mysql,pdo,mysql-error-1054,Php,Mysql,Pdo,Mysql Error 1054,昨天我有一个关于mySQL语法的问题。这就是如何拥有多个WHERE语句。我得到了1054。它是“字段列表中的未知列”。我已经找到了如何让代码执行,但是我无法让它以编程方式工作(我必须在后面加入一些引号) 这是我对php的输出: clientid=andv025075 以下是我的php: <?PHP include 'connect.php'; $client = $_POST['clientid']; try{ $stmt = $conn->prepare('
clientid=andv025075
以下是我的php:
<?PHP include 'connect.php';
$client = $_POST['clientid'];
try{
$stmt = $conn->prepare('
SELECT * FROM accounts where isonline = 1 AND clientid <> :clientid
');
$stmt->bindParam(':clientid', $client);
$stmt->execute();
$i = 0;
$aOutputArray = array();
while ($row = $stmt->fetch())
{
$aOutputArray['users'][$i] = [
'clientid' => $row['clientid'],
'username' => $row['username'],
'theme' => $row['themeset'],
];
$i++;
}
echo json_encode($aOutputArray);
}catch(PDOException $e){
echo "noone_online";
}
?>
发生了什么事(?):
选择*
来自帐户
其中isonline=1
和clientid和V025075
限制0,30
需要发生什么:
SELECT *
FROM accounts
WHERE isonline =1
AND clientid <> 'andv025075'
LIMIT 0 , 30
选择*
来自帐户
其中isonline=1
和clientid'和V025075'
限制0,30
现在,我想知道为什么语句不会使用绑定的参数执行,因为这样会自动将其识别为字符串并比较字符串?为什么我需要添加引号?那么,我应该如何把这些引语放进去呢?我试图直接从客户端和send添加引号,但它们被转换为ASCII,作为bindvalue的第三个参数add PDO::PARAM_STR
SELECT *
FROM accounts
WHERE isonline =1
AND clientid <> 'andv025075'
LIMIT 0 , 30