Php PDO异常“带有消息”SQLSTATE[42000]:
我收到以下错误:Php PDO异常“带有消息”SQLSTATE[42000]:,php,mysql,pdo,Php,Mysql,Pdo,我收到以下错误: Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; 但是,我无法解决。电话号码是15,这是 $res->execute(array_values($params)); 你能发现问题吗 function fet
Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error
in your SQL syntax;
但是,我无法解决。电话号码是15,这是
$res->execute(array_values($params));
你能发现问题吗
function fetchBgnew(array $conditions){
$db = Core::getInstance();
$sql = "SELECT p.id, p.bg, p.bg_desc, p.bg_id, p.user_id, p.panel_id, p.domainurl,
p.type, p.price
FROM ".USERS_BG." as p
left join ".USERS." as u on p.user_id=u.id WHERE u.status !=0 and 1 and";
$params = array();
foreach ($conditions as $column => $value) {
if (preg_match('/^[a-z]+$/', $column)) {
$sql .= "$column = ?";
$params[] = $value;
$sql .= "group by p.id desc, LIMIT 0,25";
}
}
$res = $db->dbh->prepare($sql);
$res->execute(array_values($params));
$res->fetchAll(PDO::FETCH_ASSOC);
$sql="SELECT p.id FROM ".USERS_BG." as p
left join ".USERS." as u on p.user_id=u.id WHERE u.status !=0 and";
$params = array();
foreach ($conditions as $column => $value) {
if (preg_match('/^[a-z]+$/', $column)) {
$sql .= "$column = ? group by p.id desc LIMIT 0,25";
$params[] = $value;
}
}
$cnt = $db->dbh->prepare($sql);
$cnt->execute(array_values($params));
$cnt->rowCount();
return $result = array("data"=>$res, "count"=>$cnt);
}
function fetchUser(array $conditions){
$db = Core::getInstance();
$sql = "SELECT id FROM ruj_users_jel WHERE";
$params = array();
foreach ($conditions as $column => $value) {
if (preg_match('/^[a-z]+$/', $column)) {
$sql .= "$column = ?";
$params[] = $value;
}
}
$res = $db->dbh->prepare($sql);
$res->execute(array_values($params));
$numrows = $res->rowCount();
return $numrows;
}
$bgdataarr = fetchBgnew(array("p.status"=>'1'));
$bgdata = $bgdataarr['data'];
$page_title = "Home";
foreach($bgdata as $brag){
print_r($bgdata[$i]['countjellys']=fetchUser(array('brag_id'=>$bg['id'])));
}
看起来你忘了空格
$sql = "SELECT p.id,p.bg,p.bg_desc,p.bg_id,p.user_id, p.panel_id,p.domainurl,p.type,p.price FROM ".USERS_BG." as p left join ".USERS." as u on p.user_id=u.id WHERE u.status !=0 and 1 and";
...
$sql .= "$column = ?";
...
$sql .= "group by p.id desc, LIMIT 0,25";
这将导致一个类似SELECT。。。andcolumn=请注意'and'和'column'之间缺少空格
此外,您的GROUP BY语法不正确。DESC后面不应该有逗号,也不应该缺少空格。想象一下,如果有两个字段,除了正确的。。。@TomvanderWoerdt的答案:您的sql语句无效,您只能在末尾添加一个LIMIT子句
这同样适用于GROUP BY子句。请修复缩进-这样读取代码是不可能的。我确实提到过这一点,想象一下两个字段会发生什么,但是是的,这一点。@TomvanderWoerdt奇怪,但自从我第一次看到它以来,您似乎已经编辑了您的答案。@jeroen我不确定您关于LIMIT子句的意思。我只需要在SQL语句的末尾使用它。你能澄清一下吗?@Claude Grecea你应该在循环后添加“限制”和“分组依据”条款,而不是在循环中。以及前面没有逗号的“限制”条款。你能回显你正在准备的完整sql语句吗?@jeroen我现在明白了不要将sql语句放入循环中。我读错了密码。从那以后,我做了更改,现在收到一个错误。下面是sql语句$sql=SELECT p.id,p.brag,p.brag_desc,p.brag_id,p.user_id,p.panel_id,p.domainurl,p.type,p.price FROM ruj_users_brag as p left加入ruj_users as u on p.user_id=u.id其中u.status=0和1,p.status=1组,p.id描述限值25;谢谢你的回复。我添加了空格并去掉了逗号,但仍然收到相同的错误。我甚至成功地在myphpadmin中执行了该命令。之后,插上插头,仍然出现相同的错误。