我在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编辑器中复制并运行,它将正确返回。
但现在它给了空。数据库连接等没有错误。因为其他查询运行正常。
这里可能出现什么错误?
答案 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'";
已删除{}花括号。