【发布时间】:2015-01-28 03:19:43
【问题描述】:
查询:
SELECT * FROM ac_journal WHERE datetime < (SELECT datetime FROM ac_journal WHERE jid = 1089 AND rid IN ('2','3','4')) ORDER BY datetime DESC LIMIT 1
当我在 phpmyadmin 中执行这个查询时,我得到了一行
在我的代码中,它没有返回任何内容。
function ac_journal_get_previous_entry($jid)
{
global $user; //1
echo $jid; //1089
echo "<br />'" . implode("','", array_keys($user->roles)) . "'"; //'2','3','4'
if ($jid > 0)
{
$result = db_query("SELECT * FROM {ac_journal} WHERE datetime < (SELECT datetime FROM {ac_journal} WHERE jid = ? AND rid IN (?)) ORDER BY datetime DESC LIMIT 1", array($jid, "'" . implode("','", array_keys($user->roles)) . "'"));
$obj = $result->fetchAll();
echo $result->rowCount(); //0
if (is_array($obj) && count($obj) > 0)
{
echo "HERE"; //never gets here
return "<a href='https://example.com/journal/" . $obj[0]->jid . "'>Previous</a>";
}
}
}
【问题讨论】:
-
您正在使用占位符
?但没有对它们做任何事情。 -
@Fred-ii- 看起来它们在数组中,作为
db_query()的第二个参数 ->array($jid, "'" . implode("','", array_keys($user->roles)) . "'") -
为什么你的 php 中的表名周围有大括号 ->
{ac_journal}? -
@Sean 这是我要问的关于
WHERE jid = ? AND rid IN (?)的部分——不应该发生某种类型的绑定吗?我错过了什么? -
@Sean 因为我使用的是 Drupal (7)