【问题标题】:MySQL Error “Query was empty”MySQL 错误“查询为空”
【发布时间】:2017-10-29 15:39:30
【问题描述】:
$send_event = $db->query(sprintf("SELECT `bmembMember` FROM `bmembBusiness` = '%u' WHERE `bmembBusiness` = '%u' ORDER BY `bmembId` DESC", $bs['busId'])) OR die('Cron not run') ;
while($se=$db->fetch_row($send_event))
{
$text = "The {$bs['busName']} business went bankrupt\, all members have been made redundent." OR die('Cron not run');

谢谢

【问题讨论】:

  • 值得研究使用准备好的语句和绑定变量,您还应该检查失败(如果查询失败,$send_event 可能为假)
  • 使用sprintf 根本无法保护您的数据库免受 SQL 注入。看看 NigelRen 提到了什么。

标签: php mysql sql cron


【解决方案1】:

您的 sprintf 使用 2 个值,但您只提供一个。无论如何都不需要一个,那一行应该是

$send_event = $db->query(sprintf("SELECT `bmembMember` FROM `bmembBusiness` WHERE `bmembBusiness` = '%u' ORDER BY `bmembId` DESC", $bs['busId'])) OR die('Cron not run') ;

【讨论】:

  • "one is not needed" 有点不准确 - 根本不应该存在,因为您不能使用 @987654322 @,就是FROM table
  • '有点不准确'!!
  • 感谢您在我使用时得到 500 服务器错误的回复
  • 当我这样做时 $send_event = $db->query(sprintf("SELECT bmembMember FROM WHERE bmembBusiness = '%u' ORDER BY bmembId DESC", $ bs['busId'])) 或 die('Cron 未运行') ;然后我得到........QUERY ERROR: You have an error in your SQL syntax;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'WHERE bmembBusiness = '3' ORDER BY bmembId DESC' 附近使用正确的语法查询是 SELECT bmembMember FROM WHERE bmembBusiness = '3 ' 由bmembId DESC 订购
  • 您在此 SQL 中缺少表名 - FROM WHERE 中间缺少某些内容。
【解决方案2】:

修复应该修复查询的FROM 子句。

 ...FROM `bmembBusiness` WHERE...

【讨论】:

    【解决方案3】:

    查询的高位区域错误,

    "SELECT bmembMember FROM bmembBusiness = '%u' WHERE bmembBusiness = '%u' ORDER BY bmembId DESC", $bs['busId'])

    试试这个应该可以修复查询:-

    SELECT bmembMember FROM Table_name WHERE bmembBusiness 喜欢 '%u' ORDER BY bmembId DESC, abs(busId);

    【讨论】:

    • 使用Like 而不是= 会改变查询的逻辑。 % 存在的原因不是 SQL,而是 sprintf
    猜你喜欢
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 2011-11-13
    • 1970-01-01
    相关资源
    最近更新 更多