php - php: 選擇 * 和選擇值之間的區別是什麼

  显示原文与译文双语对照的内容
119 2

有什麼區別

 $query ="SELECT email FROM users WHERE username='$username'";
 $result = mysqli_query($db, $query);
 $row = mysqli_fetch_array($result);
 $email = $row['email'];
 $_SESSION['email'] = $email;

 $query ="SELECT * FROM users WHERE username='$username'";
 $result = mysqli_query($db, $query);
 $row = mysqli_fetch_array($result);
 $email = $row['email'];
 $_SESSION['email'] = $email;

它們都返回相同的值,是否有更有效的方法來實現這個?

时间:原作者:0个回答

133 3

如果表中包含與謂詞匹配的行,select * 將返回所有列的值,而 select column_name 只返回與謂詞匹配的行的值。

原作者:
114 4

SELECT column 只返回該列的值。SELECT * 返回表中每一列的值。如果你在第二個代碼塊中進行 print_r($row),那麼在 array 中會看到很多元素,而不僅僅是 $row['email']

這裡有一個不錯的q& A,它討論了 SELECT *SELECT column 之間的相對性能差異。@Uueerdo's 點關於另一個欄位 Having 導致性能問題的其他欄位也非常有效。

如果你是ing表,也可以遇到問題,如果兩個表具有相同的名稱列,那麼在數據返回到應用程序框架時,表中的值可以覆蓋另一個。

原作者:
90 4

如果你只需要 email,那麼 * 是最有效的,因為你返回的是每個列的值。

你還應該參數化查詢。

$query ="SELECT email FROM users WHERE username=?";

http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

原作者:
111 4
  • 選擇所有表示將返回所有列的列,但"選擇電子郵件"將返回更多effecient的列"郵件"。你還可以選擇多個列,例如:"選擇 id,來自用戶的電子郵件"。
原作者:
...