我该如何解决这个错误?

时间:2013-01-12 16:49:03

标签: php

请帮我解决这个问题:

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]%'";

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

你的问题可能是这样的:

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

您正在计算索引01,因为之前的count()给了您1。但这是索引的总数,最后一个索引仍为0

将其更改为:

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

更好的是,只需使用foreach

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

隐含地计算$x中的索引 您可能仍需要更改AND填充程序的上次条目检测。 (通常你先创建一个子串数组,然后使用填充符implode()制作" AND "。)

YadaYada:还要注意未经过滤的输入。将数据库转义函数用于文本字符串。尽管如此,使用PDO和编写语句更容易。

答案 1 :(得分:0)

导致$keyword_array数组没有$x键。

答案 2 :(得分:0)

结果,克服,只有一个字:

error_reporting(0);

问题是,通知是否包含在错误中?

相关问题