以下查询中的错误是什么?

时间:2013-03-26 09:56:07

标签: php mysql drupal

我在Drupal6中编写了以下查询。

$sql = 
    "SELECT registryvalue 
    FROM {muln_registry} 
    WHERE fk_applicationid = %d 
    AND registrykey = '%s'";

$result = db_result(db_query($sql, 32, 'SHOW_SCORE_TO_STUDENT'));

它应该返回值1.但它没有显示任何内容。如果我在mysql编辑器中复制并运行,它将正确返回。

但现在它给了空。数据库连接等没有错误。因为其他查询运行正常。

这里可能出现什么错误?

5 个答案:

答案 0 :(得分:0)

我只能看到错误是因为{}

应该是

 $sql = "SELECT registryvalue FROM muln_registry WHERE fk_applicationid = %d AND registrykey = '%s'";

答案 1 :(得分:0)

尝试

echo '<pre>';
var_dump(db_query($sql, 32, 'SHOW_SCORE_TO_STUDENT'));
echo '</pre>';

查看句柄中的数据。这可能会让您更好地了解出了什么问题。我的建议是切换到PDO,但我知道当系统已经使用不同的DB机制时,这不会是一个有效的选项。

答案 2 :(得分:0)

如果'SHOW_SCORE_TO_STUDENT'每次都相同,为什么不使用:

$sql = "SELECT registryvalue FROM {muln_registry} WHERE fk_applicationid = '%d' AND registrykey = 'SHOW_SCORE_TO_STUDENT'";

你还有第二个参数但不是第一个参数,不确定这可能是问题吗?

答案 3 :(得分:-1)

您应该尝试LIKE运算符来搜索模式。例如 WHERE column_name LIKE '%searchString'将搜索记录以搜索字符串开头的位置。

有关Like的更多信息,您可以搜索它。

答案 4 :(得分:-2)

请使用:

$sql     = "SELECT registryvalue FROM muln_registry WHERE fk_applicationid = %d AND registrykey = '%s'";

而不是

$sql     = "SELECT registryvalue FROM {muln_registry} WHERE fk_applicationid = %d AND registrykey = '%s'";
已删除

{}花括号。