Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在mysql中编写查询时_Php_Mysql_Mysqli - Fatal编程技术网

Php 在mysql中编写查询时

Php 在mysql中编写查询时,php,mysql,mysqli,Php,Mysql,Mysqli,假设我有一个名为users的表,其中包含id、name、username和password字段。当我编写用于获取所有字段的查询时,这样写是否更好 $sql = mysqli_query($con,"SELECT * FROM users LIMIT 50"); 或者这样: $sql = mysqli_query($con,"SELECT id, name, username, password FROM users LIMIT 50"); 对于此代码: while($me = mysqli_

假设我有一个名为users的表,其中包含id、name、username和password字段。当我编写用于获取所有字段的查询时,这样写是否更好

$sql = mysqli_query($con,"SELECT * FROM users LIMIT 50");
或者这样:

$sql = mysqli_query($con,"SELECT id, name, username, password FROM users LIMIT 50");
对于此代码:

while($me = mysqli_fetch_array($sql)){ 
$id = $me['id'];
$name = $me['name'];
$user = $me['username'];
$pass = $me['password'];
}

一个比另一个好。一个比另一个更精细。或者两者的性能完全相同

性能上根本没有差异。但是,我建议明确说明要在生产代码中选择的列。如果向表中添加列,可能会对查询产生影响。对于任何维护代码的人来说,查询正在做什么以及需要什么值也更清楚


事实上,使用
SELECT*
效率较低,因为MySQL将不得不查找列名,而且它的内存效率较低,因为PHP创建的结构将比使用的(可能)具有更多的值,这将消耗更多的内存。但是,我认为这对于我的“无差异”评论来说是微不足道的。

我不知道性能如何,但是在执行联接时,如果在多个表中有相同的列,这可能会给您带来麻烦。在这种情况下,您需要手动使用别名,这通常需要列出所有列。考虑到我更喜欢保持一致性,正如爆炸药丸提到的那样,比起使用
*

永远不要使用*返回表中的所有列,它更容易判断/维护发生了什么-这是懒惰的。您应该只提取所需的数据。即使您需要每个字段,您的表也将不可避免地发生变化


有关更多详细信息,请参见

是什么阻止您进行某些测试?假设字段存在,两者都会起作用,但记录在案的最佳实践是后者。@u\u mulder我不知道sql server最喜欢什么,请不要重复提问,谢谢!第二个是更好的表现。谢谢你们,正是我想要的,当我可以的时候,你们会接受我的回答。是的!如果您使用*,表更改不会造成任何伤害。使用显式设置的字段名时,可能会导致崩溃