我很難過。當我做下面的查詢完全如圖所示,我得到一個錯誤: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;
編輯:它不是任何變量,它只是$ uname導致的問題。但是如果我做一個echo $ uname;出口();它正確迴應變量。它不喜歡什麼? – user1483042
你的$ uname包含'''嗎? –
我敢打賭,如果你做了$ sql的回聲,它會變得很明顯,也許$ update ['uname']是一個問題,無論$ update是從哪裏來的。 ,$ update []就像神奇般地出現,就好像它在其他上下文中有一些含義一樣 – Drew