2012-02-18 16 views
1

次のコードでPHPでエラーが発生すると予想されますが、エラーの兆候なしで実行されます。PHP - SQLエラーでMySQLにエラーメッセージが表示されない

<?php 

error_reporting(E_ALL); 
ini_set('display_errors','On'); 

$link = mysql_connect('localhost','JUST_ANY_TEXT EVEN WITH SPACES', ''); 

mysql_select_db('JUST_ANY_TEXT EVEN WITH SPACES', $link); 

echo 'LINK RESULT = '.($link?'OK':'ERROR'); //THIS PRINTS: LINK RESULT = OK 

echo mysql_query("SELECT INVALID_TEXT FROM TABLE_THAT_DOES_NOT_EXISTS_ANYWHERE PLUS ANY TEXT 3[t3p36g333 3 4638343´tp4oy0i9u54t-9u´089hwpjoeg~,ç"); 
+0

少なくとも警告を表示していますか? – Ryan

+0

いいえ。 – DMF

答えて

2

これは意図したとおりに動作します。 official documentationをチェックアウトすると、ほとんどの機能の戻り値があることがわかります。その戻り値をチェックして、すべてが正常であることを確認する必要があります。

また、これらの従来のmysql_*の機能はかなり古くなっています。代わりにPDO packageを使用することをお勧めします。

コードの即時エラーを指摘するには。あなたは好きで、それを使用する必要があります。

$success = mysql_select_db('JUST_ANY_TEXT EVEN WITH SPACES', $link); 
if (!$success) 
    die ('Error selecting the database!'); 
+0

mysql_connectとmysql_select_dbはTRUEを返します(mysql_connectはリソースIDを返します)。 mysql_queryの結果だけがFALSEになります。 – DMF

+0

私は同意します。mysqli関数 – AgnosticDev

+0

@DMFを使用してみてください。正しく使用するために追加した例を参照してください。 – vbence

1

するmysql_query()のあなたはMySQLのエラーメッセージを取得するために)((するmysql_queryの結果を確認してください)とmysql_errorを使用する必要があります。

$query = "invalid query"; 
$result = mysql_query($query) or trigger_error(mysql_error()." ".$query); 

しかし、にmysql_connectを間違った資格情報があると、エラーを発生させるはずです。
エラーが発生していますか?どんなPHPエラー?

+0

はい、私は他のPHPエラーを見ることができると確信しています。 – DMF

+0

本当にそのような "スペースがあるテキスト"の場合は、資格情報を確認してください。 mysql_connectとmysql_select_dbの両方で、通常のPHPエラーが発生します。しかし、わからない場合でもmysql_error()を使うことができます。 –

+0

これで、mysqlがusernameパラメータに対してのみエラーをスローしないことに気付きました。サーバー名やパスワードなどのその他のパラメータは、間違った資格情報を使用するとエラーになります。 – DMF

関連する問題