2011-08-15 17 views
0

これはphpMyAdminの上で動作しますが、私はコードを使用していたときに私とエラーになり、エラーが言う、解析エラー:>構文エラー、予期しない「%」....私のクエリで日付形式を使用する方法?

いただきました!私のsintaxと間違っていますか?

<?php 

$database =& JFactory::getDBO(); 

//Declare Variables 
$user = JFactory::getUser(); 
$id = $user->get('id'); 
$name = $user->get('name'); 

// Display quizzes 
echo "</br>"; 
echo "Quizzes History for : " ; 
echo "<b>"; 
echo $name; 
echo "</b>"; 


echo "</br>"; 
echo "</br>"; 

$database->setQuery(" SELECT distinct qui.title AS name, 

(SELECT GROUP_CONCAT(profiles.title) 

    FROM jos_jquarks_users_profiles AS users_profiles  
    LEFT JOIN jos_jquarks_profiles AS profiles ON users_profiles.profile_id = profiles.id  
    WHERE users_profiles.user_id = sessionWho.user_id) AS profile,  
    (SELECT sum(score) 
FROM jos_jquarks_quizzes_answersessions  

    WHERE quizsession_id = quizSession.id    AND status <> -1) AS score, 

(SELECT count(distinct question_id)    FROM jos_jquarks_quizzes_answersessions    
    WHERE quizsession_id = quizSession.id) AS maxScore,    
DATE_FORMAT(quizSession.finished_on,'%M %d, %Y') 
FROM jos_jquarks_quizsession AS quizSession 

LEFT JOIN jos_jquarks_users_quizzes AS users_quizzes ON users_quizzes.id = quizSession.affected_id  
LEFT JOIN jos_jquarks_quizzes AS qui ON users_quizzes.quiz_id = qui.id  
LEFT JOIN jos_jquarks_quizzes_answersessions AS quizSessAns ON quizSessAns.quizsession_id = quizSession.id 
LEFT JOIN jos_jquarks_sessionwho AS sessionWho ON sessionWho.session_id = quizSession.id   
LEFT JOIN jos_jquarks_users_profiles AS users_profiles ON users_profiles.user_id = sessionWho.user_id 
LEFT JOIN jos_jquarks_profiles AS profiles ON profiles.id = users_profiles.profile_id 
WHERE sessionWho.user_id = ' .$id ") ; 


if (!$database->query()) { //write data and if error occurs alert 
    echo "<script> alert('".$database->getErrorMsg()."'); </script>"; 
} 

//var_dump($database); 
$tableStyle = "padding: 5px;border:1px"; 
$tdStyle = "padding:5px "; 
$thStyle = "padding:7px "; 

echo '<table style="' . $tableStyle . '" cellpadding="7" cellspacing="7">'; 
echo "<tr> <th style=align:center>Quiz Title </th><th style=align:center> Score </th><th>Maximum Score </th><th> Unanswered </th> <th>Finished On </th></tr>"; 

$row = $database->loadRowList(); 
foreach($row as $valuearray) 
{ 
echo '<tr style=" align="center">'; 
foreach($valuearray as $field) 
{ 

echo "<td>$field</td>"; 
} 
echo "</tr>"; 
} 
echo "</table>"; 

?> 

答えて

2

「マーク」をエスケープする必要があります。 ので、代わりに

DATE_FORMAT(quizSession.finished_on,'%M %d, %Y') 

DATE_FORMAT(quizSession.finished_on,\'%M %d, %Y\') 

してみてくださいそれとも、ただ起動し、文字列を終了するには、「二重引用符を使用することができます

1

あなたの文字列は単一引用符$database->setQuery('によって終了されるためです - 。ただ二重引用符に変更すると動作します。

$database->setQuery(" "); 
+0

ありがとうございますエラーが消えてしまったので、私のPHPループはforachループでエラーを表示しています。私には何が間違っているのかを教えてください。 – Tony77

+0

どうしたらいいですか? – Chris

関連する問題