0

php mysql関数を使用して、データテーブルから1行しか返さないことがわかっているクエリがある場合、次のように関数をネストします。

$myVariable = mysql_fetch_assoc(mysql_query("SOME QUERY"));

mysqli 関数を使用するには、次の 2 行のコードを使用する必要があります。

$query = $db->query("SOME QUERY");
$myVariable = $query->fetch_assoc();

古い mysql 関数を使用するように、2 行を 1 行にまとめることができますか?

4

3 に答える 3

1

それらを連鎖させることができます:

$myVariable = $db->query("SOME QUERY")->fetch_assoc();

それとあなたの最初のmysql_使用の両方がエラーを起こしやすいですが。どちらも、失敗したクエリを特に適切に処理しません。

于 2013-06-24T10:58:27.150 に答える
1

はい、できますが、お勧めしません。

$myVariable = $db->query("SOME QUERY")->fetch_assoc();

エラー処理を行う機会がないため、これは悪い考えです。例えば:

$myVariable = array();

$result = $db->query("SOME QUERY");
if($result && $result->num_rows == 1)
{
    $myVariable = $result->fetch_assoc();
}

呼び出しをネストまたはチェーンすると、未処理の致命的なエラーが発生する可能性がquery()あります。これは、MySQL エラーが発生した場合に false が返されるためです。

コードを整理したり削減したりしたい場合は、MySQLi クラスを拡張し、独自のメソッドを追加して 1 つの行をフェッチすることができます。

于 2013-06-24T11:00:06.830 に答える
-1

実際のところ、古い mysql 関数を使用して 2 つの行を 1 つに凝縮する必要はなく、新しい関数でも行うべきではありません。

プログラマーが何かを要約する必要がある場合、関数を記述します。だからあなたはしなければなりません。

それで、それはどうあるべきか

$myVariable = my_function("SOME QUERY");

ご覧のように、

  • これらすべての入れ子/連鎖/もつれ構造よりも短く、読みやすい
  • エラー処理、プロファイリング ログなどがあります。
  • 既に関数を使用している場合は、既存のコードを書き直す必要さえありません。
于 2013-06-24T11:05:26.140 に答える