【问题标题】:Jquery autocomplete show two rows from mysql in one rowJquery自动完成在一行中显示来自mysql的两行
【发布时间】:2014-10-21 08:53:31
【问题描述】:

我有一个多行的 mysql 表

ID, country, city, region

我有一个使用 jquery-ui 自动完成功能的搜索,它目前自动完成城市搜索,如下所示:

if (isset($_GET['term'])){
    $return_arr = array();

    try {
        $conn = new PDO("mysql:host=".DB_SERVER.";port=8889;dbname=".DB_NAME, DB_USER, DB_PASSWORD);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $stmt = $conn->prepare('SELECT city,country FROM location WHERE city LIKE :term LIMIT 10');
        $stmt->execute(array('term' => '%'.$_GET['term'].'%'));

        while($row = $stmt->fetch()) {
            $return_arr[] =  $row['city'];

        }

    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }



    echo json_encode($return_arr);
}

我想在城市旁边显示国家,所以Los Angeles 会变成Los Angeles, US

【问题讨论】:

  • 真的吗?无法处理基本的字符串操作? $arr[] = "{$row['city']}, {$row['country']}"
  • 真的吗?不讽刺就不能回答?您可以使用 $return_arr[] = $row['city'].", ".$row['country'];

标签: php jquery mysql autocomplete


【解决方案1】:

在 php 中,您可以使用 '.' 附加一个字符串。例如:

$mystring = 'part one' . 'part two';

echo $mystring; //-> will product: part onepart wo

你也可以让php解释一个字符串,用'"'(双引号)分隔

$myvar = "boat";
$mystring = "One day I'll buy a {$myvar}";

echo $mystring; //-> will produce: One day I'll buy a boat

以下应该可以正常工作。祝你好运!

if (isset($_GET['term'])){
    $return_arr = array();

    try {
        $conn = new PDO("mysql:host=".DB_SERVER.";port=8889;dbname=".DB_NAME, DB_USER, DB_PASSWORD);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $stmt = $conn->prepare('SELECT city,country FROM location WHERE city LIKE :term LIMIT 10');
        $stmt->execute(array('term' => '%'.$_GET['term'].'%'));

        while($row = $stmt->fetch()) {
            $return_arr[] =  $row['city'] . ', ' . $row['country'];

        }

    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }



    echo json_encode($return_arr);
}

解决此问题的另一种替代方法是将字符串附加到您的 SQL 中

SELECT CONCAT(city, ', ', country) AS location FROM location WHERE city LIKE :term LIMIT 10

【讨论】:

  • 我没有意识到它是如此简单,无论如何,有多个有效选项的好答案,我会记住这些。谢谢!
  • 有什么办法,当单击自动完成中的某些内容时,它不会将, Countrycode 添加到文本字段中?
  • 您将使用自动完成或预输入实现来处理。假设您正在使用其中之一。很可能最好创建一个新帖子,详细说明您想要实现的目标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
  • 2017-05-23
  • 1970-01-01
  • 2011-09-19
  • 1970-01-01
相关资源
最近更新 更多