根据这里的文档:http://rtfm.modx.com/display/xPDO20/xPDO.query
下面是一个例子:
$result = $modx->query("SELECT * FROM modx_users WHERE id=1");
if (!is_object($result)) {
return 'No result!';
}
我认为这句话会起作用:
$checkUnique = $modx->query("SELECT * FROM my_table_name WHERE guid = '$unique' AND used = 0");
//guid already used, or non-existant
if(!is_object($checkUnique)){
$result = array(
"result" => false
);
return json_encode($result);
}
当我执行
var_dump
(of$checkUnique
)时,我得到的结果是:object(PDOStatement)#22 (1) { ["queryString"]=> string(70) "SELECT * FROM my_table_name WHERE guid='5114722f24870' AND used=0"}
我知道
used
列已设置为1
,但它从未触发我的if
块。我做错什么了?
最佳答案
看来MODx doco需要一些帮助。我只是在本地尝试了一下,一个空的结果集仍然返回一个PDOStatement
对象。
您可以尝试使用PDOStatement::rowCount()
检查返回的行数
$count = $checkUnique->rowCount();
或者像这样修改你的查询
$check = $modx->query("SELECT COUNT(1) FROM my_table_name WHERE guid = '$unique' AND used = 0");
$count = $check->fetchColumn();
if (!$count) {
// etc
我对MODx文档提出了一个错误-http://tracker.modx.com/issues/9502
关于php - $ modx->查询似乎不执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14765285/