请帮我解决这个问题:
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]%'";
我该如何解决这个问题?
答案 0 :(得分: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 "
。)
答案 1 :(得分:0)
导致$keyword_array
数组没有$x
键。
答案 2 :(得分:0)
结果,克服,只有一个字:
error_reporting(0);
问题是,通知是否包含在错误中?