相同的选择在控制台上有效,但在PHP中无效


Same select works on console but not in PHP

这让我很生气。这是我现在使用的代码:

   <?php
//open connection to mysql db
$connection = mysqli_connect( "mysql.kit-series.net", "XXXXX", "XXXXXX", "kit_series_net" ) or die( "Error " . mysqli_error( $connection ) );
$connection->set_charset( "utf8" );
//fetch table rows from mysql db
$nombre = $_POST['nombre'];
$select = "SELECT ID FROM wp_qnnpx4_posts WHERE post_type='tvshows' AND post_title = '" . $nombre . "'";
$result = $connection->query( utf8_encode( $select ) );
$result = $result->fetch_assoc();
$id     = $result['ID'];
echo $select;
echo $id;
//close the db connection
mysqli_close( $connection );
  • 结果是,如果我在控制台上使用select,它是预期的
  • 结果是,如果我在PHP中使用select和$nombre-variable没有重音符号
  • 如果我使用控制台中的select和$nombre变量都有重音符号

只有当$nombre有重音符号并在PHP文件中使用时,结果才不是预期的,而且它只是不返回任何结果。

在这种情况下,我打印了select,把它放在控制台上,它就工作了。我不知道还能做什么。

知道吗?

除非处理非UTF8字符串,否则不要使用utf8_encode。从你的问题和评论来看,你完全使用UTF8(HTML、数据库、数据库连接、PHP文件编码),所以调用utf8_encode不仅没有必要,而且会产生负面影响。

正如在对utf8_encode:上的PHP文档的感谢贡献中所说

如果您的文本未在ISO-8859-1中编码,则不需要此功能。如果您的文本已经在UTF-8中,则不需要此功能。事实上,将此函数应用于未在ISO-8859-1中编码的文本很可能只是混淆了该文本。