您好!我正在使用带有DB的AJAX,当我尝试在一个选项中渲染我的数据库并选择标记时,它给了我一个"未定义的偏移错误"。
这是我的代码:
$sql = "SELECT word FROM words";
$result = mysql_query($sql);
$response = "";
$size = 0;
if($result === FALSE) {
die(mysql_error());
}
while ($row = mysql_fetch_array($result)) {
for($i = 0; $i < count($row); $i ++) {
$pos = stripos(strtolower($row[$i]), $pattern); //Here marks the error
if(!($pos === false)) {
$size ++;
$word = $row[$i];
$response .= "<option value=\"$word\">$word</option>";
}
}
}
if($size > 0) {
echo "<select id=\"list\" size=$size onclick=\"selectValue()\">$response</select>";
}
这个应用程序的想法是你可以开始键入任何单词,它将搜索与输入匹配的单词,首先在选项HTML标记中显示它,当没有更多的选项匹配时,它显示在一个选择HTML标记。
它有点工作,但它显示了这个错误。有人能帮我吗?谢谢!!
答案 0 :(得分:0)
这是修改过的脚本:
while ($row = mysql_fetch_assoc($result)) {
$pos = stripos(strtolower($row['word']), $pattern);
if(!($pos === false)) {
$size ++;
$word = $row['word'];
$response .= "<option value=\"$word\">$word</option>";
}
}
但实际上下一个脚本运行得更快:
if ($result = mysql_query("SELECT word FROM words where word like '%".mysql_real_escape_string($pattern)."%'")) {
$response = "";
$size = 0;
while ($row = mysql_fetch_assoc($result)) {
$size ++;
$word = htmlspecialchars($row['word']);
$response .= "<option value=\"$word\">$word</option>";
}
echo "<select id=\"list\" size=$size onclick=\"selectValue()\">$response</select>";
}
是的 - 使用mysqli而不是mysql,不推荐使用mysql_函数。