2010-05-24 118 views
1

我試圖尋找使用此代碼的多個列:搜索多列MySQL和PHP

<?php 

// Connection Database 
$search = $_POST ['Search']; 

mysql_connect("xxxxxx", "xxxxxx", "xxxxx") or die ("Error Connecting to Database"); 
mysql_select_db("xxxxx") or die('Error'); 
    $data = mysql_query("SELECT CourseName, CourseDescription, CourseLeader FROM course MATCH (CourseName, CourseDescription, CourseLeader) AGAINST ('". $search ."') 
or die('Error'); 
Print "<table border cellpadding=3>"; 
while($info = mysql_fetch_array($data)) 
{ 
    Print "<tr>"; 
    Print "<th>Course Name:</th> <td>".$info['CourseName'] . "</td> "; 
    Print "<th>Course Description:</th><td>".$info['CourseDescription'] . "</td> "; 
    Print "<th>Course Leader:</th><td>".$info['CourseLeader'] . " </td></tr>"; 

    } 
    Print "</table>"; 

    ?> 

,我發現了以下錯誤:解析錯誤:語法錯誤,意想不到的T_STRING在/ home/a7105766/public_html/website/scripts/coursesearchdb.php on line 30

我在做什麼錯?

歡呼

回答

3

這條線是不正確的:

$data = mysql_query("SELECT ... AGAINST ('". $search ."') or die('Error'); 

你甚至可以看到從語法高亮是堆棧溢出使用錯誤。開發時你使用語法高亮嗎?如果沒有,我會推薦它來捕捉這種錯誤。

解決方案 - 您需要關閉雙引號和左括號。

$data = mysql_query("SELECT ... AGAINST ('". $search ."')") or die('Error'); 

而且不是die('Error')你可以寫的東西作爲die(mysql_error())有用這樣。你也可以看看trigger_error(mysql_error())

在你的SQL中你缺少關鍵字WHERE。有關全文搜索的更多信息,請參閱手冊中的Full-Text Search Functions

+0

即時獲得'錯誤'... – addi 2010-05-24 22:11:45

+0

@addi:看到我的更新:不要使用die('錯誤')' - 這對調試非常無益。將其更改爲'die(mysql_error())'。這應該會爲您提供查詢的錯誤消息,希望您可以自己查找錯誤。 – 2010-05-24 22:16:07

+0

即時獲取此: 您的SQL語法中有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行的MATCH(CourseName,CourseDescription,CourseLeader)AGAINST('')'附近使用正確的語法,但不知道這意味着什麼!是匹配錯了? – addi 2010-05-24 22:23:24