<?php
//----------------------------------------------------
//data base infomation
//Edit when you use.
//----------------------------------------------------
$mysql['server'] = 'localhost';
$mysql['user'] = 'root';
$mysql['passwd'] = '';
$mysql['database'] = 'test';//----------------------------------------------------
// The use of the data sent from the Javascript side is enabled.
//----------------------------------------------------
$data        = array();$db_table    = mysql_real_escape_string($_GET['db_table']);
$q_word      = mysql_real_escape_string($_GET['q_word']);
$page_num    = mysql_real_escape_string($_GET['page_num']);
$per_page    = mysql_real_escape_string($_GET['per_page']);
$field       = mysql_real_escape_string($_GET['field']);
$show_field  = mysql_real_escape_string($_GET['show_field']);
$hide_field  = mysql_real_escape_string($_GET['hide_field']);
$select_field= mysql_real_escape_string($_GET['select_field']);
$order_field = mysql_real_escape_string($_GET['order_field']);
$primary_key = mysql_real_escape_string($_GET['primary_key']);
$order_by    = mysql_real_escape_string($_GET['order_by']);$offset      = ($page_num - 1) * $per_page;
$show_field  = ($show_field)
? explode(',',$show_field)
: array(false);
$hide_field  = explode(',',$hide_field);
//----------------------------------------------------
// connect data base
//----------------------------------------------------
$db = mysql_connect($mysql['server'], $mysql['user'], $mysql['passwd']);
mysql_select_db($mysql['database'], $db);
//----------------------------------------------------
// get autocomplete candidate
//----------------------------------------------------
$query = " SELECT   $select_field
FROM     $db_table
WHERE    $field LIKE '%$q_word%'
ORDER BY (
CASE
WHEN $order_field LIKE '$q_word%'
THEN 0
ELSE 1
END
),$order_field $order_by
LIMIT    $per_page
OFFSET   $offset";
$rows  = mysql_query($query, $db);$data['cnt_page'] = 0;
$attached_cnt = 0;
while ($row = mysql_fetch_array($rows,MYSQL_ASSOC))
{
$data['cnt_page'] ++;
foreach($row as $key => $value){ // for "select_only" option
if($key == $primary_key){
$data['primary_key'][] = $value;
} // get the value for autocomplete candidate
if($key == $field){
$data['candidate'][] = $value; } else { // for Sub-info
if(!in_array($key, $hide_field)){ // It non-displays it in the exclusion column when not corresponding
// to the display column though it doesn't correspond.
// However, it doesn't become non-display when there is "*"
// in the display column.
if(
$show_field[0] !== false
&& !in_array('*', $show_field)
&& !in_array($key, $show_field)
){
continue;
} $data['attached'][$attached_cnt][] = array(
0 => $key,
1 => $value
);
}
}
}
$attached_cnt++;
}
//----------------------------------------------------
// get the entire number
//----------------------------------------------------
$query = "
SELECT   $field
FROM     $db_table
WHERE    $field LIKE '%$q_word%'
";
$data['cnt'] = mysql_num_rows( mysql_query($query, $db) );echo json_encode($data);
//----------------------------------------------------
// End
//----------------------------------------------------
// cut the connection with the data base
mysql_close($db);?>

解决方案 »

  1.   

    这是个对ajax请求返回json数据的php脚本!
      

  2.   

    我知道是数据库查询的代码,但是中间的处理细节看不懂,请各位能不能帮忙给出最后返回的json数据结构,举个例子也可以,非常感谢
      

  3.   

    $arr=array(
    0=>array(1,2,3,4),
    1=>array(5,6,7,8),
    2=>array(9,10,11,12),
    );
    echo "<pre/>";
    $jsone=json_encode($arr);echo $jsone."\n";//json编码$jsone=json_decode($jsone);print_r($jsone);//json解码