【问题标题】:Mysql_fetch_array supplied argument is not a valid MYSQL query [duplicate]mysql_fetch_array 提供的参数不是有效的 MYSQL 查询 [重复]
【发布时间】:2014-04-09 05:12:59
【问题描述】:

我收到此错误消息:“Mysql_fetch_array 提供的参数不是有效的 MYSQL 结果”但我不知道代码有什么问题

$sql = "SELECT *, status_pedido.nome as descricao_status,frete.nome as nome_frete, historico.data as data_hist, DATE_FORMAT(historico.`data`,'%d/%m/%Y') as data, DATE_FORMAT(historico.`data`,'%H:%i:%s ') as hora
                    FROM midiosto_db.`l-pedidos` as pedido
                    INNER JOIN midiosto_db.`l-pedido-historico` as historico
                        ON pedido.id = historico.`id-pedido`
                    INNER JOIN midiosto_db.`l-status` as status_pedido
                        ON status_pedido.id = historico.`id-status`
                    INNER JOIN midiosto_db.`l-frete` as frete
                        On frete.id = pedido.`id-frete`
                    WHERE pedido.id  = ".$_GET["id_pedido"]."
                    ORDER BY data_hist DESC";

$query_historico = mysql_query($sql);
$row_historico = mysql_fetch_array($query_historico);

【问题讨论】:

  • 先把mysql_query($sql);改成mysql_query($sql) or die(mysql_error());看看有没有报错。
  • 另请注意,不应再使用mysql_ 函数。使用mysqli_ 或 PDO。
  • 在您发布问题之前询问“此错误消息是什么意思?”在搜索框中搜索实际的错误消息。在那里您会找到遇到完全相同问题的人提出的其他问题,然后您可以了解他们是如何解决的。
  • 你是否也在 mysql_query($sql) 后面加上了“或死”?
  • @FDL 我得到 SELECT 命令拒绝用户 'midiosto_sys'@'localhost' 用于表 'l-pedidos'

标签: php mysql sql database runner


【解决方案1】:

小心使用此代码插入 SQL...get 根本不安全。使用 PDO 代替 mysql_query。

对于您的错误消息,query_historico 可能不是您期望的类型,因为您的 SQL 语句可能是错误的。

【讨论】:

  • 使用 PDO 是不够的。用户必须使用准备好的语句。如果用户使用不受信任的数据创建 SQL 语句,则 PDO 对 SQL 注入开放。
  • 我当然同意@Andy Lester
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-14
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
  • 1970-01-01
相关资源
最近更新 更多