2015-08-18 56 views
0

我很難過。當我做下面的查詢完全如圖所示,我得到一個錯誤:PHP在執行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); 
} 

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 2' in /home/ride4w5/public_html/test_site/includes/functions.php:343 Stack trace: #0 /home/ride4w5/public_html/test_site/includes/functions.php(343): PDO->query('INSERT INTO sta...') #1 /home/ride4w5/public_html/test_site/includes/rater/1.php(62): update_rater(Array) #2 {main} thrown in /home/ride4w5/public_html/test_site/includes/functions.php on line 343

但是,如果我做同樣的查詢,但改變終值是一個字符串或一個數字,它的工作原理正好。任何變量都會引發錯誤。爲什麼錯誤只針對一個變量而不是一個值?其他變量不會導致任何問題。

編輯:

它不是任何變量,它只是$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

編輯:它不是任何變量,它只是$ uname導致的問題。但是如果我做一個echo $ uname;出口();它正確迴應變量。它不喜歡什麼? – user1483042

+0

你的$ uname包含'''嗎? –

+0

我敢打賭,如果你做了$ sql的回聲,它會變得很明顯,也許$ update ['uname']是一個問題,無論$ update是從哪裏來的。 ,$ update []就像神奇般地出現,就好像它在其他上下文中有一些含義一樣 – Drew

回答

-1

這是我看到那是錯的第一件事。至少對我來說這是錯的,我不確定它是否是語法錯誤。

$sql = ("INSERT INTO stars (parkid, rating, hits, logname) 
     VALUES (".$parkid.", ".$rating.", ".$hits.", ".$uname.")"); 
相關問題