0

私は a を実行してから他のことをする関数を持っていますmysql_query()mysql_query()最初のものが成功した場合にのみ、別のものを実行できるようにしたい.

ここに関数があります

function myFunction($qtext)
{
  mysql_query($qtext) or die(mysql_error() . "\n");
  //do some more stuff
  return true;
}

関数を呼び出して、if else 条件で失敗したかどうかを確認しようとしています...

if(!myFunction($query_text))
{
  echo "first query failed";
}
else
{
  mysql_query($query_text1) or die (mysql_error() . "\n");
}

これは、最初のクエリが成功したときに機能するように見えますが、最初のクエリが失敗した場合は、に移動してテキストをor die返し、条件の行に到達することはありません。mysql_error()echo "first query failed";

理想的には、ユーザーに mysql_error テキストを使用して警告できるが、or dieing を使用しないようにしたいので、条件付きでより多くのコードを実行できます。

動作の説明に関するヘルプは大歓迎です。ありがとう。

ps私は初心者です...return true;関数で適切に使用しているかどうかわかりません

4

3 に答える 3

4

あなたは常に関数で戻っています -ステートメントでチェックしている場合trueも返す必要があります。falseif()

function myFunction($qtext) {

    // run the query
    $sql = mysql_query($qtext);

    // see if there was a result (or whatever you're checking)
    if(mysql_num_rows($sql) > 0) {
        // do some more stuff
        return true;
    } else {
        return false;
    }
}

また、減価償却されているように、の代わりにorを学ぶ必要mysqliがあります。また、テスト以外では使用しないことをお勧めします。代わりにエラー処理関数を作成してください。これは実際には非常に簡単で、スクリプトを突然強制終了してユーザーを悩ませる代わりに、適切にエラーを処理します。また、サイトのセキュリティが損なわれる可能性があるため、エラー メッセージをブラウザに直接出力することも望ましくありません。:)PODmysqlmysqldie()

参考までに: 私はデータベース クラスを使用し、このようにクエリを実行します。速くてきれいです。

if($db->get_results("SELECT email FROM users WHERE email='".$db->escape($email)."'")) {
    return true;
} else{
    return false;
}
于 2013-09-07T17:45:55.330 に答える
0

「or die」が起こらないようにするには、これを return false に置き換えます。

function myFunction($qtext)
{
    $result = mysql_query($qtext);
    if ($result === false)
    {
        return false;
    }
    //do some more stuff
    return true;
}

そうすれば、後でチェックが機能し、状態が発生します。すべての実行を停止したい場合のために予約されている「or die」を使用する必要はありません。

于 2013-09-07T17:50:40.210 に答える
0

die()スクリプトを即座に強制終了します。その関数は、その内部で呼び出しても値を返すことdie()はありません。他のクエリを実行することはできません。インスタンス化されたオブジェクトのデストラクタのみがdie()呼び出し後に実行され、いくつかの制限があります。

クエリが失敗した後も処理を続行できるようにしたい場合は、決して を呼び出してはなりませんdie()。代わりに、Timが提案したようmysql_query()に返さFALSEれたかどうかを確認してください。オペレーターに注意してください。ここで適切なエラーチェックを行うことが重要です。===

それでもエラーを出力したい場合は、代わりに orをdie()使用してください。print()echo

于 2013-09-07T18:11:59.463 に答える