2016-05-07 13 views
3

これは私を怒らせています。 これは私が今使っているコードです:同じセレクトはコンソールでは動作しますが、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); 
  • 結果、私は、コンソール上での選択を使用する場合、それは予想されます。
  • 私はPHPで選択を使用し、 $ nombre変数はアクセントを持たないと予想されます。
  • コンソールでselectを にして、$ nombre変数にアクセントがあると、結果が期待通りです。

$ nombreにアクセントがあり、PHPファイルで使用されている場合のみ、結果は期待通りではなく、結果が返されません。

私はこの場合にselectを出力し、コンソールに置いて動作させます。私はもっ​​と何をすべきかを知っていません。

+0

コンソールに置くとどういう意味ですか? –

+0

ブラウザコンソールからPHPコードを実行できるとは思いません。 :D –

+0

HTMLヘッダにUTF-8文字セットを設定しましたか?例えば ' ... '?そうでない場合、サブミットされた値の文字エンコーディングはUTF-8でなくても問題ありません。 – trincot

答えて

0

UTF8以外の文字列を処理している場合を除き、utf8_encodeは使用しないでください。あなたの質問とコメントから、完全にUTF8(HTML、データベース、データベース接続、PHPファイルエンコーディング)になっていることがわかりますので、utf8_encodeを呼び出すだけでなく、悪影響があります。あなたのテキストはISO-8859-1でエンコードされていない場合は、この機能を必要としない

としてはPHP docs on utf8_encodeへの感謝の貢献の中で述べています。テキストがすでにUTF-8にある場合は、この機能は必要ありません。実際には、ISO-8859-1でエンコードされていないテキストにこの関数を適用すると、そのテキストを単純に歪めるだけです。

+0

あなたはまったく正しいです、私は$ selectを見て、そのエンコードについて忘れていました。だから私のためにばかげている。 お返事ありがとうございます。 ;) – Malkev

関連する問題