php - MySQL 查询仅适用于 WordPress

标签 php mysql wordpress

我广泛尝试寻找答案,但我的问题似乎太具体了。

我的查询包含拉丁字符:

$mydb->query("SELECT cotação FROM compras");

在 WordPress 短代码中调用时它工作正常,但在同一站点上的自定义 php 中它给了我这个:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '??o FROM compras' at line 1

现在,我不想只删除字符,因为我知道查询有效而且我更愿意理解问题所在。

那么这里发生了什么?谢谢。

最佳答案

为了让它在我的本地机器上工作,它不会工作,直到我将排序规则和 NAMES 设置为 UTF8。从我在搜索中发现的大量数据看来,这是人们在使用非 ASCII 字符时遇到的主要问题。

为了让它与我的本地 PDO 实例一起工作,我执行了以下操作:

    $pdo->exec("SET collation_connection = utf8_bin");
    $pdo->exec("SET NAMES utf8");
    $all = $pdo->query("SELECT * FROM temp_cotação LIMIT 5")->fetchAll();

您可以在此处找到更多信息:

PDO cutting off strings at a UTF-8 character

在我看来,全局而不是每个连接都这样做会更好...我发现这是为每个连接全局执行 SET NAMES utf8:

How to make PDO run SET NAMES utf8 each time I connect, In ZendFramework

要在 mysqli_ 中做同样的事情,看这里:

php mysql SET NAMES 'utf8' COLLATE 'utf8_unicode_ci' doesn't work with mysqli (solved)

关于php - MySQL 查询仅适用于 WordPress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30177001/

相关文章:

ios - 一次使用 SQL for iOS 应用程序和网页

php - mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows 等...期望参数 1 是资源

php - 如何在 Mac OsX 10.7.3 上安装和运行 wkhtmltopdf 以便在 PHP 应用程序中使用

PHP 读取所有内容直到第一个逗号

php - 使用 echo 退出 for 循环

mysql - YII2获取10年5年后的日期

php - 根据月份名称获取记录,不考虑值是否存在

php - 使用 PHP 为订单创建不同税费的汇总表

php - Wordpress 单篇文章内容侧边栏

javascript - 无法读取 main.js 中未定义的属性 'substr'