php mysqli 选择位置和顺序

Posted

技术标签:

【中文标题】php mysqli 选择位置和顺序【英文标题】:Php mysqli select where & order by 【发布时间】:2016-10-26 05:49:00 【问题描述】:

mysqli_query"order by" 标记有问题。 实际上它工作正常,但最后的 order by 只返回这个错误:

出现错误:“订单子句”中的未知列“id”

$query2 = "SELECT * FROM items WHERE itemownerid = '".$creatorid."' AND game = 1 AND `game_id` = $gameid order by id desc"; 

【问题讨论】:

警告:使用mysqli 时,您应该使用parameterized queries 和bind_param 将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug。 切勿$_POST$_GET 数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。 您是否希望您的 items 表中有列 id? @Anant 为什么他需要按该列排序,因为那里的所有结果都具有相同的值? 那么查询结果中没有名为id的列。为什么你认为应该有? 您的表中没有这样的列。按现有列排序 【参考方案1】:

实际上,错误本身表明您的items 表中不存在id 列,这就是order by id 失败的原因。

因此将其更改为有效的列名。一个例子如下:-

$query2 = "SELECT * FROM items WHERE itemownerid = '".$creatorid."' AND game = 1 AND `game_id` = $gameid ORDER BY <write any existing column name of your items table>  DESC"; 

注意:- 请注意@tadman 提出的评论。很有用也很必要

【讨论】:

以上是关于php mysqli 选择位置和顺序的主要内容,如果未能解决你的问题,请参考以下文章

缺少 mysqli 扩展。请检查您的 PHP 配置

mysqli 存储 php 变量而不是值

配置文件的加载顺序和位置

PHP Mysqli - 结果为0时选择*或选择计数(*)?

使用 PHP 和 MySQL 计算地理位置距离

PHP 选择排序