2013-01-12 50 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); 

的问题,该通知是否被列为错误的一部分吗?