INSERT执行PDO时出现PHP致命错误

时间:2015-08-18 03:04:57

标签: php mysql pdo

我很难过。当我完全按照所示执行以下查询时,出现错误:

    function update_rater($rater_result) {
    $pdo = new PDO('mysql:host='.DB_SERVER.'; dbname='.DB_NAME, DB_USER, DB_PASS);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->exec('SET NAMES "utf8"');

    foreach ($rater_result as $update)
    {
        $sample[] = array (
                'name'=>$rater_result['name'],
                'rating'=>$rater_result['rating'],
                'hits'=>$rater_result['hits'],
                'parkid'=>$rater_result['parkid'],
                'logname'=>$rater_result['logname'],
                'uname' =>$rater_result['uname']);
    }
    $id = $update['parkid'];
        $parkid = $update['parkid'];
        $rating = $update['rating'];
        $hits = 1;
        $uname = $update['uname'];

    $sql = "INSERT INTO stars (parkid, rating, hits, logname)
        VALUES ($parkid, $rating, $hits, $uname)";              

    $result = $pdo->query($sql);
}
  

致命错误:未捕获的异常' PDOException'与消息   ' SQLSTATE [42000]:语法错误或访问冲突:1064您有   SQL语法错误;查看与您的手册相对应的手册   MySQL服务器版本,用于在')附近使用正确的语法。在第2行'   在/home/ride4w5/public_html/test_site/includes/functions.php:343   堆栈跟踪:#0   /home/ride4w5/public_html/test_site/includes/functions.php(343):   PDO->查询(' INSERT INTO sta ...')#1   /home/ride4w5/public_html/test_site/includes/rater/1.php(62):   update_rater(Array)#in {main}抛出   第343行/home/ride4w5/public_html/test_site/includes/functions.php

但是,如果我确实完全相同的查询,但将最终的VALUE更改为字符串或数字,它就可以正常工作。任何变量都会引发错误。为什么错误仅针对变量而不针对值抛出?其他变量不会引起任何问题。

编辑:

它不是任何变量,只是$uname导致问题。但是,如果我做了

echo $uname; 
exit(); 

它正确地回应了变量。它不喜欢什么?

修改

$ uname来自

$user->session_begin(); 
$auth->acl($user->data); 
$user->setup(); 
$request->enable_super_globals(); 
$username = $user->data['username']; 
$uname = $username;

0 个答案:

没有答案