【问题标题】:Why is this script not working as intended?为什么这个脚本没有按预期工作?
【发布时间】:2014-03-09 14:59:51
【问题描述】:

我对 PHP 和 MySQL 还很陌生,所以我想我会先给出它。我正在尝试制作一个 jQuery/PHP/MySQL/Json 自动完成脚本。

我正在关注this 教程。我目前专注于 PHP 方面。一切的设置都与教程中的一样,但由于某种原因,我不断得到

注意:未定义变量:结果为 localhost/copy.php 的第 32 行

每次我用类似的东西来称呼它

localhost/copy.php?term=arr

这是我的代码:

 <?php if ( !isset($_REQUEST['term']) )   exit;
      else {$term = $_REQUEST['term'];}

$host = 'localhost';
$user = 'user_test';
$pass = 'root';
$db = 'testing';
$con = mysql_connect($host, $user, $pass);
mysql_select_db($db);
$query = "SELECT name FROM mytable WHERE name LIKE '$term' "; 

$result = mysql_query($query);

if($result === FALSE) {
    die(mysql_error());
}

while($row = mysql_fetch_array($result))
{
  $results[] = array('label' => $row['name']);
}

echo json_encode($results); // Line 32



?>

数据库

【问题讨论】:

    标签: php jquery mysql json


    【解决方案1】:

    如果查询没有返回任何行 $results 将保持未定义。确保变量在其使用的相同编码级别中初始化或分配总是一个更好的主意。

    【讨论】:

      【解决方案2】:

      您在该行上方的while 循环似乎没有运行,这可能意味着您没有从 SQL 查询返回任何结果。

      【讨论】:

      • 要补充一点,您在示例中寻找“arr”,但 SQL 查询中的 LIKE 语句周围没有任何通配符。您可能想尝试LIKE '%$term%',如果您想要不区分大小写的搜索,请使用ILIKE '%$term%'
      • 我一直在想更多要添加的东西。 ;) 您可能想要考虑一种更友好的方式来处理没有结果的搜索,我可能会通过在 while 循环上方显式定义 $results 变量来做到这一点,因此它始终使用 $results = array(); 定义
      猜你喜欢
      • 2022-10-14
      • 2020-07-24
      • 2011-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      相关资源
      最近更新 更多