Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO异常“带有消息”SQLSTATE[42000]:_Php_Mysql_Pdo - Fatal编程技术网

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中执行了该命令。之后,插上插头,仍然出现相同的错误。