当前位置: 首页 > 知识库问答 >
问题:

数据库准备语句中的汉字

晏兴发
2023-03-14

我可能有一个简单的编码问题,但我无法解决。我在MySQL数据库中有英文或中文的地址,所以我使用了utf8_unicode_ci。我从数据库中检索我的汉字没有问题,但我不能在准备好的请求中使用汉字。

我解释说:如果我打

$bdd= new PDO('mysql:host=localhost:3306; dbname=****;charset=utf8', 'root', '');   
$list_business = $bdd->query('SELECT * FROM business WHERE address LIKE N\'台灣台南市\' ');
$nb_business=$list_business->rowCount();

我会得到一个结果,因为其中一个地址包含“”但如果我尝试使用一个准备好的请求:

$list_business = $bdd->prepare('SELECT * FROM business WHERE address LIKE ? ');
$list_business->execute(array('%'.$_POST['address'].'%'));
$nb_business=$list_business->rowCount();

如果$_post[“address”]在英文中有效,在中文中就不行了:p

编辑:

当请求show变量时,如“char%”;我得到了这个结果

character_set_client utf8mb4

character_set_connection utf8mb4

character_set_database拉丁文1

character_set_filesystem二进制

character_set_results utf8mb4

character_set_server拉丁文1

character_set_system utf8

character_sets_dir C:\wamp\bin\mysql\mysql5.6.17\share\charsets\

求求你,救命!

谢谢你,

共有1个答案

家弘业
2023-03-14

您是否将语言环境设置为“UTF-8”?您是否将mysql字符集设置为UTF-8?在mysql中,exec“显示像'%char%'这样的变量;它应该返回

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
 类似资料:
  • 问题内容: 我知道有些人可能会回答这个问题,但是我的问题来自于您和您的答案。我正在阅读有关SQL注入以及如何保护数据库的过去两个小时的问答。我看到的大量网页和教程也是如此。 我发现有一半人声称prepare语句确实可以保护您的数据库,而另外50人则声称不是。 另一方面,我读到mysql_real_escape_string可以完成这项工作,而其他人则说不行。 我的问题是谁相信? 另外,这是适当的准

  • 启动Mysql控制台, 建立数据库 create database nutzbook default character set utf8; 运行后的截图

  • 我正在使用我生成的一个准备好的语句,但在Java抛出的语句上出现了语法错误。然而,当我将PS的toString复制并粘贴到数据库的phpmyadmin中时,它的执行完美无缺。有什么想法会出错吗,我很难理解? 编辑:更改为PS.ExecuteUpdate(查询);还是不起作用。

  • 我的JDBC不工作。我使用的是Oracle 11g Express Edition、Tomcat7、Java7、OJDBC7。jar在$CATALINA_HOME/lib中。我正在开发的应用程序使用spring框架。但那是无关紧要的,因为我构建了一个简单的Java类来测试相同的,但仍然没有得到任何结果。 如果我在sqlplus中运行查询,就会得到预期的结果。如果我在常规的中使用相同的查询,就会得到

  • 问题内容: 今天有人告诉我,我确实应该在应用程序中使用PDO和准备好的语句。在我了解好处的同时,我也在努力了解如何将其实现到我的工作流程中。除了它使代码更简洁外,我是否应该有一个特定的数据库类来容纳所有准备好的语句,还是应该在每次运行查询时都创建一个?我发现很难理解何时应使用标准PDO查询以及何时应使用准备好的语句。任何示例,技巧或教程链接将不胜感激。 问题答案: pdo :: prepare()