【问题标题】:Syntax in PHP ... $row['report_id'] in MySql Query [closed]PHP 中的语法 ... MySql 查询中的 $row['report_id'] [关闭]
【发布时间】:2014-01-06 16:59:56
【问题描述】:

我如何使用$row['report_id']

在这个 MySql 查询中?

mysql_query("SELECT SUM(hours) AS summe
             FROM reports WHERE report_id = $row['report_id'];")

我在 google 上找不到有关此主题的任何内容。

【问题讨论】:

  • 您遇到的错误是什么?
  • 从 $row[report_id] 中删除简单引号,mysql_query("SELECT SUM(hours) AS summe FROM reports WHERE report_id = $row[report_id];")
  • @perdeu 虽然从技术上讲,期望report_id 是一个常量,如果未定义该常量,则回退到字符串值。一般不是很好的做法。花括号将是另一个更好的选择WHERE report_id = {$row['report_id']}

标签: php mysql syntax syntax-error


【解决方案1】:
mysql_query("SELECT SUM(hours) AS summe FROM reports WHERE report_id = " . $row['report_id']);

或者:

mysql_query("SELECT SUM(hours) AS summe FROM reports WHERE report_id = {$row['report_id']}");

这可以解决您的具体问题。但是请意识到您仍然有一些严重的问题:

1) 您正在使用已弃用的mysql_* 方法,需要移至mysqli_*PDO

2) 使用准备好的语句,然后使用参数绑定,现在您对 SQL 注入持开放态度!

3) 您对$row['report_id'] 的使用使您看起来像是在嵌套查询,而不是使用一个带有JOIN 的查询。几乎可以肯定,您在这里所做的任何事情都有机会改进。

【讨论】:

  • 有可能,在他们的查询中使用$row['report_id'],OP 也在循环上一个查询和嵌套查询的结果,而不是使用连接......它可能会导致 SQL 注入这里的问题较少,因为 $row['report_id'] 可能是一个 db 值(二次注入仍然是可能的),但性能很差,并不意味着前面的查询不会受到以下情况的影响小鲍比桌
  • @MarkBaker 好点,补充说
  • 感谢您的帮助! :) 它有效,我也把你的建议放在心上:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
  • 2010-10-06
  • 2011-12-13
  • 2013-02-13
相关资源
最近更新 更多