我已经尝试了几个小时才能让它发挥作用。
<?php
require_once('inc.connect.php');
if( $_SERVER['REQUEST_METHOD'] == 'GET' )
{
if( isset( $_REQUEST ))
{
$type = array_keys($_REQUEST)[0];
$value = $_REQUEST[$type];
if( $value === null )
{
$where_like = null;
}
else
{
$where_like = ' WHERE ' . $type . '_name LIKE ?';
}
$db = new PDO('mysql:host=' . MYSQL_HOST . ';dbname=' . MYSQL_DBNAME . ';charset=UTF8', MYSQL_USERNAME, MYSQL_PASSWORD);
$sql_statement = 'SELECT :' . $type . '_id, :' . $type . '_name FROM report_' . $type . $where_like;
$sql_prepare = $db->prepare( $sql_statement );
if( !(is_null($where_like)) ) $sql_prepare->bindValue(1, '"%' . $value . '%"', PDO::PARAM_STR);
try{
while( $sql_result = $sql_prepare->execute() )
{
$return[$sql_result[$type . '_id']] = $sql_result[$type . '_name'];
}
$return_JSON = json_encode($return);
}
catch(PDOException $exception){
return $exception->getMessage();
}
echo "exception: ".$exception;
}
}
我一直这样......
警告:PDOStatement :: execute():SQLSTATE [HY093]:参数号无效:混合名称和位置参数
答案 0 :(得分:4)
我喜欢拥有稳定工作的一件事是我不再需要担心我的stackoverflow帖子对潜在雇主的影响。本着这种精神,你的常识和 juergen d 都可以“散步”,因为这样不合作的“so-and-sos”。
这是jQueryUI自动完成({source})选项请求的AJAX响应。
这是我完成的工作代码......
<?php
require_once('inc.connect.php');
if( $_SERVER['REQUEST_METHOD'] == 'GET' )
{
if( isset( $_REQUEST ))
{
$type = array_keys($_REQUEST)[0];
if( in_array( $type, ['category', 'sub_category', 'names', 'report_searches', 'report_favs'] ))
{
$value = $_REQUEST[$type];
$id = $type . '_id';
$name = $type . '_name';
$table = 'research_' . $type;
$where = $name;
$like = '%' . $value . '%';
$value === null ? $where_like = null : $where_like = ' WHERE ' . $where . ' LIKE ?';
$sql_db = new PDO('mysql:host=' . MYSQL_HOST . ';dbname=' . MYSQL_DBNAME . ';charset=UTF8', MYSQL_USERNAME, MYSQL_PASSWORD);
$sql_statement = 'SELECT ' . $id . ', ' . $name . ' FROM ' . $table . $where_like;
$sql_prepare = $sql_db->prepare( $sql_statement );
if( !($value === null) ) $sql_prepare->bindParam(1, $like);
try{
if( $sql_prepare->execute() )
{
while( $sql_result = $sql_prepare->fetch(PDO::FETCH_ASSOC) )
{
$return[$sql_result[$id]] = $sql_result[$name];
}
echo json_encode($return);
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
}
}