【发布时间】:2020-06-13 11:42:15
【问题描述】:
我有一个奇怪的错误: 我有那个简单的代码:
$id = strip_tags($_SESSION["infos_profile_id"]);
$id_friend = strip_tags($_POST["update_user_chat_every_5_second"]);
$q = $bdd->query('SELECT * FROM message WHERE id_sender = '.$id_friend.' AND id_send_to = '.$id.' AND message_read = "0"');
在 mysql 上运行良好。
但是在 mariadb 服务器上托管我的网站后,它看到了那个错误。
PHP 致命错误:未捕获异常 'PDOException' 并带有消息 'SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在
我已经尽一切努力解决,但我找不到真正的错误来自哪里。
对解决该错误有什么帮助吗?
谢谢。
【问题讨论】:
-
你不能混用不同的mysql api。
-
警告:尽可能使用带有占位符值的预处理语句,以避免在查询中注入任意数据并创建SQL injection bugs。在
mysqli和PDO 中执行这些操作非常简单,其中任何用户提供的数据都使用?或:name指示符指定,稍后使用bind_param或execute填充,具体取决于您是哪个使用。 -
@Parfait PHP 世界充满了赤贫和苦难,考虑到有多少伟大的工具可以免费下载并且可以轻松下载,这是令人震惊的。这可能是因为这些伟大的工具被埋在无知的 YouTube“教程”和 w3schools 之类的垃圾填埋场之下。
-
@tadman 我听不懂你的英语。所以谢谢你们的cmets。
-
每当您遇到这样的错误时,记录实际生成的 SQL 以查看您发送到数据库的内容然后对其进行检查是很有用的。除此之外,您不能通过使用从表单发布的变量来简单地创建 SQL,而不确保它们不安全,通过使用参数和绑定值与提供的函数/方法或确保使用提供的 mysqli_real_escape_string 函数或类似函数解析输入值一种防止 SQL 注入。
标签: php mysql mariadb syntax-error