2013-01-12 57 views
0

請幫我解決這個問題:如果執行的程序段的代碼如何解決此錯誤?

if($_POST["keyword"]) { 
$keyword  = $_POST["keyword"]; 
$keyword  = trim($keyword); 
$keyword_array = explode(" ",$keyword); 
$numberofwords = (integer)count($keyword_array); 
require("server.php"); 
$link = open_koneksi(); 
$tbl_name  = "author"; 
$query   = "SELECT COUNT(*) as num FROM $tbl_name WHERE " ; 
    for ($x = 0; $x<= $numberofwords; $x++) { 
     $query .= "author LIKE '%$keyword_array[$x]%'"; 
     if ($x < $numberofwords) { 
     $query .= " AND "; 
     } 
    } 
    echo("<SCRIPT>document.location.href='?p=result';</SCRIPT>"); 

}

,會出現一個警告如下:

Notice: Undefined offset: 1 in C:\xampp\htdocs\bijang\result.php on line 111 

定位故障的參考到此代碼:

$query .= "author LIKE '%$keyword_array[$x]%'"; 

我該怎麼做f這是什麼?

回答

3

你的問題很可能是這樣的:

for ($x = 0; $x<= $numberofwords; $x++) { 
       ## 

你指望指標0直到1,因爲以前count()給你1。但是,這是指數的總數,最後的指數仍然是0

更改成:

for ($x = 0; $x < $numberofwords; $x++) { 
        # 

更重要的是,只需使用一個foreach

foreach ($keyword_array as $x => $kw) { 

計數在$x隱含索引。
您可能仍然需要更改AND填充符的最後一次輸入檢測。 (通常你首先製作一串子串,然後implode()與填充物" AND "。)

YadaYada:同樣要關心未過濾的輸入。對文本字符串使用數據庫轉義函數。儘管使用PDO和準備語句更容易。

+0

感謝馬里奧..在我試圖按照你的建議,下一個錯誤信息:注意:未定義的變量:numberofwords在...... –

+0

你仍然需要這個計數變量。 – mario

+0

另請參見[PHP:「注意:未定義變量」和「注意:未定義索引」](http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index) – mario

0

原因$keyword_array陣列沒有$x密鑰。

0

原來,克服,只有一個字:

error_reporting(0); 

的問題,該通知是否被列爲錯誤的一部分嗎?