解決済み 以下を参照
文字列がすでに mysql データベースにあるかどうかを確認したい
function checkStatus($articlename)
{
$articlename = mysql_real_escape_string($articlename);
$query = "SELECT name FROM table WHERE name LIKE '$articlename' LIMIT 1";
echo $query;
$result = mysql_query($query);
if(mysql_fetch_array($result) !== false)
return true;
return false;
}
if (checkStatus($element[$i]) == true)
echo $element[$i];
要素 [$i] は出力されませんが、エコーされた $query を phpmyadmin にコピーすると、結果が得られます。また、 $element[$i] をエコーして値をコピー/貼り付けするだけで、Landskron Hell をコードに入力して取得することができます
$query = "SELECT name FROM table WHERE name LIKE 'Landskron Hell' LIMIT 1";
それも機能します。したがって、出力された変数 $element[$i] は文字列 ABC ですが、私のコードではそうではありません。これを確認するために私は試しました
if ($element[$i] == 'Landskron Hell')
echo "It worked!"
echo $element[$i] が Landskron Hell を示していても、これは機能しません。
私は本当に混乱していて、助けていただければ幸いです!
TL:DR エコー/印刷時に PHP 変数が表示される文字列と等しくないのはどうしてですか?
編集: phpmyadminのこの正確なクエリは、結果として正確に1行を返しますvar_dump($query)
!string(64) "SELECT name FROM table WHERE name LIKE 'Landskron Hell' LIMIT 1"
EDIT2:andrewsi
私が追加したおかげで
$test = 'Landskron Hell';
var_dump($articlename);
var_dump($test);
それが示している:
string(15) "Landskron Hell" string(14) "Landskron Hell"
明らかに違いがあります!しかし、それは何ですか?
EDIT3を使用して文字列を変換しましたstrToHex
function strToHex($value, $prefix = '') {
$result = '';
$length = strlen($value);
for ( $n = 0; $n < $length; $n++ ) {
$result .= $prefix . sprintf('%02x', ord($value[$n]));
}
return $result;
}
結果は次のとおりです。
%4c%61%6e%64%73%6b%72%6f%6e%20%20%48%65%6c%6c
と
%4c%61%6e%64%73%6b%72%6f%6e%20%48%65%6c%6c
どうやら2つの空白がありますか?私の要素で?しかし、それらは印刷されていませんか?
解決済み!:正しい軌道に乗せてくれた$articlename = preg_replace('/\s+/', ' ',$articlename);
THANKSを使用しました!andrewsi