我正在尝试在我目前正在开发的游戏中按“ItemLevel”在商店中订购。它应该是正确的,因为这段代码
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT)
显示没有错误。 这是 ORDER BY ItemLevel 行。
$item = mysql_query("SELECT * FROM knightG_{$shop["ItemCategory"]}s WHERE
ItemId='{$shop["ItemId"]}' ORDER BY ItemLevel ASC") or die (mysql_error());
如果需要,我可以向任何人提供更多信息。 谢谢。
最佳答案
应该是
$item = mysql_query("SELECT * FROM knightG_{$shop['ItemCategory']}s WHERE
ItemId='{$shop['ItemId']}' ORDER BY ItemLevel ASC") or die (mysql_error());
相反。在双字符串变量插值内部,您必须省略数组索引周围的引号。
如果在字符串中使用大括号包围数组允许常量,则这是无效的,因此您必须在您的情况下使用单引号。这可能看起来很奇怪,但它是有效的。
更好的方法是从已弃用的 mysql_* 函数转移到 PDO 或 mysqli,并使用带有占位符的准备好的语句来绑定(bind) inut 值。这不会解决列或表名称的标识符中的输入参数问题(此处的第一个输入替换)。
关于php - 无法通过 SQL 数据库在 PHP 中订购?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25117529/