我很难过。当我完全按照所示执行以下查询时,出现错误:
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;