可以在PHP上使用相同的变量名吗?

时间:2017-04-30 18:25:33

标签: php mysqli

我只是想知道如果我使用以下代码就可以了:

$query = mysqli_query($db, "SELECT * FROM myTable1")

while($result = mysqli_fetch_assoc($query)){
   $temp = $result['id'];
}

然后我取这样的另一个表:

$query = mysqli_query($db, "SELECT * FROM myTable2")

while($result = mysqli_fetch_assoc($query)){
   $temp = $result['id'];
}

我使用相同的变量$result$temp
我的意思是可以使用这样的代码吗?我是否应该像$result1 $result2那样对变量进行不同的命名,依此类推?
让我们说,哪一个更好,更安全,在使用相同的变量名称或给变量不同的名称? 我希望有人可以解释一下。
谢谢你。

6 个答案:

答案 0 :(得分:1)

如果您遵循SOLID原则,尤其是single responsibility principle希望您将功能隔离到不同的功能中。

如果你确实应用了这个,那么你并没有真正使用相同的变量,因为那时会有不同的范围,因此它不会成为问题。

简而言之,您不必重用变量,如果您的逻辑被分解为执行单个任务的函数,请不要将它们命名为$result1result2等...这是您项目中code smell的标志。

答案 1 :(得分:-1)

如果你已经完成了myTable1,那么它完全可以,但如果你打算在代码中的其他地方使用它那么没有,因为只有myTable2信息将被保存在$ result中

答案 2 :(得分:-1)

如果使用相同的变量来存储数据,则每次迭代时变量值都将覆盖新值,while语句后的值是最后一次迭代。

答案 3 :(得分:-1)

$temp是一个局部变量,如果您之前没有定义它,那么可以安全地使用它。

$query,根据语言允许你这样做,是的,你可以这样使用它。

答案 4 :(得分:-1)

基本PHP代码

假设您希望将数据库中的一些信息存储到变量中,然后在进行更多编码之前使用它。

所以我们有这个示例代码。将id值存储到$temp变量中。我们得到的输出是什么?

$query = mysqli_query($db, "SELECT * FROM myTable1")

while($result = mysqli_fetch_assoc($query)){
   $temp = $result['id'];
}

例如,表myTable1包含这样的数据。

+----+---------+---------+
| id |  Col1   |  Col2   |
+----+---------+---------+
|  1 | Value 1 | Value 2 |
|  2 | Value 1 | Value 2 |
|  3 | Value 1 | Value 2 |
|  4 | Value 1 | Value 2 |
+----+---------+---------+

我们的$temp变量将等于4。因为您从该表中获取所有内容,然后获取所有出现的结果。现在,让我们使用该变量。

echo 'Selected id from table myTable1 equals ' . $temp;

结果是

  

表myTable1中的选定ID等于4

然后,我们从另一个名为myTable2的表中获取数据。

$query = mysqli_query($db, "SELECT * FROM myTable2")

while($result = mysqli_fetch_assoc($query)){
   $temp = $result['id'];
}

该表包含这样的数据。

+----+---------+---------+
| id |  Col1   |  Col2   |
+----+---------+---------+
|  3 | Value 1 | Value 2 |
|  5 | Value 1 | Value 2 |
|  6 | Value 1 | Value 2 |
|  8 | Value 1 | Value 2 |
+----+---------+---------+

同样,同样的事情发生,$temp变量现在等于8。让我们以同样的方式使用它。

echo 'Selected id from table myTable2 equals ' . $temp;

结果是

  

表myTable2中的选定ID等于8

最终结果

  

表myTable1中的选定ID等于4
  从表myTable2中选择的id等于8

结论

这里没有错。如果你愿意,你可以这样做。但请注意,如果您有更多代码行,建议不要多次使用同名变量。

更复杂的PHP代码

相同的表格,结构和数据。让我们改变代码。

function printIndex($id) {
    echo 'Index = ' . $id;
}
$query = mysqli_query($db, "SELECT * FROM myTable1")

while($result = mysqli_fetch_assoc($query)){
   $temp = $result['id']; // Store id for further use
}

$query = mysqli_query($db, "SELECT * FROM myTable2")

while($result = mysqli_fetch_assoc($query)){
   $temp = $result['id']; // Store id for further use
}

printIndex($temp); // Print stored id

输出

  

指数= 8

结论

编码错误。您必须使用唯一的变量名来防止这种情况。

答案 5 :(得分:-1)

您可以在逻辑上使用相同的变量名称。它不会给你一个错误(有时你可能会在这个上下文中使用这些变量)。但是不建议在变量名称中使用通用关键字。

而是尝试根据您的模型命名变量。请看下面的例子,

如果您的'myTable1'关于学生,那么您可以使用$ student而不是$ result1。 同样,如果您的'myTable2'与产品有关,那么您可以使用$ product而不是$ result2。