2

我正在尝试检索记录的 id 号以在其他地方用作变量。我只想要在另一列中具有特定值的记录中的 id。这是我的代码:

$result = mysql_query("SELECT id FROM order WHERE orderNumber = '$orderNumber'") or die (mysql_error());
$id = $result;

当我测试时,我得到: SQL 语法;检查与您的 MySQL 服务器版本相对应的手册,以了解在 'order WHERE orderNumber = '5b0ea3' 附近使用的正确语法

有任何想法吗?

4

4 回答 4

6
SELECT id FROM order WHERE orderNumber = '$orderNumber'

ORDER 是 SQL 中的保留词;我建议您将表的名称更改为其他名称。

如果你真的不能,那么你可以用反引号转义列名和表名:

SELECT `id` FROM `order` WHERE `orderNumber` = '$orderNumber'

或者

SELECT `id` FROM `order` WHERE `orderNumber` = '".$orderNumber."'

还可以查看关于停止使用mysqli_函数的评论——它们不安全,并且被弃用。

于 2013-06-05T14:15:59.897 回答
1

由于ORDER是保留字,因此您必须在 sql 查询中使用反引号。之后使用mysql_fetch_assoc来获取 id。

$result = mysql_query("SELECT `id` FROM `order` WHERE `orderNumber` = '$orderNumber'") or die (mysql_error());
$row = mysql_fetch_assoc($result);
$id = $row['id'];

另一方面,您应该使用PDOor Mysqli,这些mysql_*功能已被弃用并被认为是一种不好的做法。

如果您打算继续使用mysql_query,至少确保使用mysql_real_escape_String$orderNumber清理变量。

于 2013-06-05T14:21:20.013 回答
0
mysqli_query($connection,"SELECT `id` FROM `order` WHERE `orderNumber` = '$orderNumber'");

如您所见,您必须包含 $connection。

于 2019-02-12T04:28:45.563 回答
-1

使用具有查询功能的自定义数据库类构建,但 SQL 查询有效

$id = 1;
$database->query("SELECT * FROM tbl_post WHERE post_id = '$id'");
于 2017-08-26T15:45:55.560 回答