我只是想知道如果我使用以下代码可以吗:
$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
等一样以不同的方式命名变量吗? 假设,在使用相同的变量名称
或给变量不同的名称之间哪个更好,更安全?
我希望有人能解释一下。
之前谢谢你。
如果您遵循 SOLID 原则,尤其是单一责任原则希望您将功能隔离到不同的功能中。
如果您确实应用了它,那么您实际上并没有使用相同的变量,因为此时会有不同的范围,因此这不是问题。
简而言之,您不必重用变量,如果您的逻辑被分解为执行单个任务的函数,请不要将它们命名为$result1
、result2
等......这是项目中代码异味的标志。
如果您完成了 myTable1,那么它完全没问题,但如果您要在代码中的其他地方使用它,那么不,因为只有 myTable2 信息将保存在$result
如果您使用相同的变量来存储数据,则每次迭代时变量值都将被新值覆盖,并且while
语句之后的值是最后一次迭代。
如果你以前没有定义过,$temp
是一个局部变量,所以这样使用是安全的。
$query
,从语言允许你做的事情来看,是的,你可以这样使用它。
基本 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
结论
编码错误。您必须使用唯一的变量名称来防止这种情况。
您可以在逻辑上使用相同的变量名称。它不会给你一个错误(有时如果你在这种情况下使用这些变量在你的循环之外,它可能会给你)。但是,不建议对变量名称使用通用关键字。
而是尝试根据您的模型命名变量。请看下面的例子,
如果你的"myTable1"是关于学生的,那么你可以使用$student而不是$result 1。 同样,如果您的"myTable2"是关于产品的,那么您可以使用$product而不是$result 2。