Javascript 到 PHP PDO 到 MySQL 查询返回空
Posted
技术标签:
【中文标题】Javascript 到 PHP PDO 到 MySQL 查询返回空【英文标题】:Javascript to PHP PDO to MySQL Query returns empty 【发布时间】:2012-11-28 09:14:06 【问题描述】:我正在使用 javascript 构建 API,出于安全原因,我将 php 数据库调用切换到 PDO。
自从这样做以来,我在查询返回空数组时遇到了麻烦(注意:不是 mysql 语法错误)。最新的例子是这样的:
/*JAVASCRIPT*/
var getSampleEntity = function(params)
//Returns Object
return $.ajax(
url: URL + 'downloadQuadrat_Organism.php',
type: 'POST',
data: 'organismID': params.oid, 'quadratID': params.qid ,
dataType: dataType
);
从浏览器发送的标头数据:
/*PACKAGE HEADER INFO*/
Request URL:http://..../downloadQuadrat_Organism.php
Request Method:POST
Status Code:200 OK
...
Form Data:
organismID:3
发送到服务器...
/*PHP*/
//Init
$resultset = array();
$quadratID = $_POST['quadratID'];
$organismID = $_POST['organismID'];
$sql = 'SELECT * FROM Quadrat_Organism WHERE organismID = :organismID OR WHERE quadratID = :quadratID';
//Main
try
$db = connect();
$stmt = $db->prepare($sql);
$stmt->bindParam(':quadratID', $quadratID);
$stmt->bindParam(':organismID', $organismID);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
$resultset[] = $row;
//Return result in JSON
$resultset = json_encode($resultset);
print_r($resultset);
catch(PDOException $e)
print 'Error!: '.$e->getMessage().'<br/>';
//End try catch
$db = null;
我期望 JSON 格式的结果数组(数据库中的虚拟数据应该返回 5 个结果),而不是我收到 [](空 JSON 数组)。
我认为问题出在 PHP 级别,但我无法确定问题。
【问题讨论】:
是不是因为必须设置$quadratID才能绑定查询? 什么意思?你已经设置好了。这里的答案指出了您查询的问题 【参考方案1】:您的 where Condition MySQL 查询中有错误:
试试这个,用这个
$sql = 'SELECT * FROM Quadrat_Organism
WHERE organismID = :organismID OR quadratID = :quadratID';
代替:
$sql = 'SELECT * FROM Quadrat_Organism
WHERE organismID = :organismID OR WHERE quadratID = :quadratID';
在查询中只使用一个 where。
【讨论】:
天哪,那是怎么偷偷溜进去的……对不起,通常会打印出错误以上是关于Javascript 到 PHP PDO 到 MySQL 查询返回空的主要内容,如果未能解决你的问题,请参考以下文章
pdo-php-javascript (ajax) 的简单引号转义问题
将 PHP PDO 迁移到 Laravel PDO 导致参数号无效
将PHP PDO迁移到Laravel PDO会导致参数号无效