【发布时间】:2023-03-28 21:30:01
【问题描述】:
似乎只用SQL语句做不到,所以我写了一个php检查,完全被脚本忽略了。 $resource 数组保存正确的数据。
public function handleUpdates($updates) {
$stmt = $this->database->connect()->prepare("SELECT ? FROM users"); //<-
$stmt->execute(["username"]); //<-
$resource = $stmt->fetch(PDO::FETCH_ASSOC); //<-
foreach ($updates["result"] as $update) {
$text = $update["message"]["text"];
$args = $update["message"]["chat"]["username"];
if ($text === "/start") {
if ($resource['username'] !== $args) //this here is ignored
$this->database->add($args);
}
}
}
【问题讨论】:
-
$update["message"] 的内容是什么?您是否尝试过调试(例如打印其内容)?
-
忽略?那么
$resourse['username']和$args的值是多少呢?您获得的值可能与您的预期不同。 -
注意表/列名不能绑定,但可以白名单
-
$resourse与$resource不同 -
这段代码
$resourse['username'] !== $args无效,因为$resourse['username']是一个数组,而$args我猜是一个字符串。如果要检查用户名是否存在于数组中,请使用in_array或array_key_exists。