select*和select value之间有什么区别

dba5bblo  于 2021-06-19  发布在  Mysql
关注(0)|答案(4)|浏览(491)

两者有什么区别

$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;

它们都返回相同的值,有没有更有效的方法?

dzjeubhm

dzjeubhm1#

* 如果你只想 email 因为您正在返回每个列的值。
您还应该参数化查询。

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

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

ubby3x7f

ubby3x7f2#

SELECT column 仅返回该列的值。 SELECT * 返回表中每列的值。如果你愿意的话 print_r($row) 在第二个代码块中,您将看到数组中的元素比 $row['email'] .
这里有一个很好的问答,讨论了 SELECT * 以及 SELECT column . @uueerdo关于另一个字段有一个巨大的blob导致性能问题的观点也是非常正确的。
你也会遇到问题 SELECT * 当你是 JOIN 如果两个表都有同名列,则当数据返回到应用程序框架时,一个表中的值可以覆盖另一个表。

nx7onnlm

nx7onnlm3#

选择所有这意味着它将返回所有列,但“选择电子邮件”将返回列“电子邮件”,这是更有效的。您还可以选择许多列,如:“select id,email from users”。

iszxjhcz

iszxjhcz4#

select * 将返回表中所有行与 predicate 匹配的列的值,而 select column_name 只返回 column_name 列中与 predicate 匹配的行。

相关问题