0

私はコンボボックスのオートコンプリート機能を達成しようとしていました. http://dev.sencha.com/deploy/ext-4.1.0-gpl/examples/form/forum-search.html

私のphpクエリ:

if (!$con) {
    throw new Exception("Error in connection to DB");
     }

$sql = "SELECT first_name FROM students WHERE first_name ILIKE '%$query%' ORDER BY name ASC";

$result = pg_query($con, $sql);
ORDER BY name ASC";


 while ($row = pg_fetch_array($result))
       {  
        $names[] = array('name' => $row[0]);

       }

$name_list = array();
$name_list['success']       = true;
$name_list['names']     = $names;


$name_list['totalCount']    = count( $name_list['names'] );

echo json_encode($name_list);

私の場合、ユーザーは学生の名の代わりに姓を入力できたので、名のチェックの結果がnullになった後に姓をチェックするようにクエリを編集する必要があります。これが私がやったことですが、うまくいきませんでした:

$sql = "SELECT first_name FROM students WHERE first_name ILIKE '%$query%' ORDER BY name ASC";
$result = pg_query($con, $sql);
if(pg_num_rows($result) == 0)
$sql = "SELECT last_name FROM students WHERE last_name ILIKE '%$query%' ORDER BY name ASC";
4

2 に答える 2

0

次の変更を試してください: PHP マニュアルの単なる例です。それに応じてクエリを変更してください。

<?php
  $result=pg_query($conn, "SELECT * FROM x WHERE a=b;");
  if  (!$result) {
    echo "query did not execute";
  }
  $rs = pg_fetch_assoc($result);
  if (!$rs) {
    echo "0 records"
  }
?>
于 2012-12-01T05:39:55.187 に答える
0

OR 条件を使用します。

SELECT first_name, last_name
FROM students 
WHERE first_name ILIKE '%$query%'
   OR last_name ILIKE '%$query%';

「SQL インジェクション」という用語についてもお読みください。あなたのコードは脆弱です。

于 2012-12-01T08:53:06.990 に答える