0

我正在尝试使用 Slim 框架进行路由,为网上商店构建实时聊天。

我的消息数据库表有一个名为

     message_key

这包含一个生成的 md5。

每次当用户决定聊天时,他/她都会使用生成的 md5 字符串向该表发布一条消息。这样我可以返回所有具有相同值的消息

    message_key

当我打电话给我的路线时:

/api/msgs/60f0c8ce4733094b68af71c471cf1139

它给我一个错误:

{"error":{"text":SQLSTATE[42S22]: Column not found: 1054 Unknown column
 '60f0c8ce4733094b68af71c471cf1139' in 'where clause'}}

但是当我将message_key列的值更改为数字时,我没有收到错误:

    /api/msgs/7272

然后我得到漂亮的 JSON 作为回报。

这是怎么发生的?

有没有办法可以使用各种字符作为路由参数?

4

2 回答 2

0

要回答这个问题,我们需要更多信息。从错误中可以清楚地看出,至少在某些时候消息键被设置为 SQL 中的列名。

您是否为 message_key... '/api/msgs(/:message_key)' 或只是 '/api/msgs' 定义了一个带有段的路由?

于 2013-01-27T00:27:06.710 回答
0

每当你遇到这样的问题时,这意味着你试图匹配一个列而不是一个值。在这种情况下,需要将 VALUE 包装在 WHERE 子句中:

 WHERE message_key = '$key';

在我尝试这样做之前:

 WHERE message_key = $key;

...这会导致查询尝试匹配名为 60f0c8ce4733094b68af71c471cf1139 的列

_所以总是检查你是否匹配 VALUES 或 COLUMNS _

于 2013-01-27T21:42:07.720 回答