两者之间有什么区别
$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 :(得分:1)
select *
将返回表中具有与谓词相匹配的行的所有列的值,而select column_name
仅返回column_name
列中与匹配的行相匹配的值您的谓词。
答案 1 :(得分:1)
SELECT column
仅返回该列的值。 SELECT *
返回表中每一列的值。如果您要在第二个代码块中使用print_r($row)
,则在数组中看到的元素将不仅仅是$row['email']
。
有一个很好的问答环节here,它讨论了SELECT *
和SELECT column
的相对性能差异。 @Uueerdo关于其他字段之一的大斑点导致性能问题的观点也很有效。
SELECT *
表也可能会遇到JOIN
的问题,如果两个表具有相同名称的列,则当数据返回到应用程序时,一个表中的值会覆盖另一个表中的值框架。
答案 2 :(得分:0)
*
,则 email
效率最低,因为您要返回每个列的值。
您还应该参数化您的查询。
$query = "SELECT email FROM users WHERE username= ? ";
http://php.net/manual/en/mysqli.quickstart.prepared-statements.php
答案 3 :(得分:0)