相同的选择适用于控制台但不适用于PHP

时间:2016-05-07 19:53:27

标签: php mysql

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

   <?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 varible没有重音符号。
  • 结果是我使用的预期结果 控制台中的选择和$ nombre变量有重音符。

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

我在那种情况下打印了选择,把它放在控制台上,然后就可以了。我不知道还能做些什么。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

除非您正在处理非UTF8字符串,否则请勿使用utf8_encode。从您的问题和评论中可以看出,您完全使用UTF8(HTML,数据库,数据库连接,PHP文件编码),因此调用utf8_encode不仅没有必要,而且会产生反作用。

正如对PHP docs on utf8_encode的赞赏所说:

  

如果您的文字未在ISO-8859-1中编码,则不需要此功能。如果您的文字已在UTF-8,则不需要此功能。实际上,将此函数应用于未在ISO-8859-1中编码的文本很可能会简化该文本。