我知道不可能一次更改多个表,所以我正在构建自己的PHP脚本来为我完成这项工作。
在这里,我得到了要更改的所有表:
<?php
include('conf/conn.php');
$result = mysqli_query($conn, "SHOW TABLES FROM queue LIKE '%room_%'");
while($table = mysqli_fetch_array($result)) {
echo($table[0] . "<br>");
}
?>
现在,我想创建一个循环,该循环为每个表执行一个MySQL查询,并在每次执行每个查询时回显一个状态。像这样:
<?php
foreach ($table[0] as $tableToAlter) {
$result = mysqli_query('ALTER TABLE $tableToAlter AUTO_INCREMENT = 1001');
if (!$result) {
echo 'Alter failded.';
} else {
echo 'Alter successful'
}
}
?>
如您所见,我是PHP的新手,而我被困在最后一部分。我不知道是否需要在循环之前进行数组到字符串的转换。如果有人可以告诉我如何使它以正确的方式工作,我将不胜感激。谢谢。
答案 0 :(得分:1)
如注释中所建议,您可以使用变量$ table [0]在while循环中调用查询。
<?php
include('conf/conn.php');
$result = mysqli_query($conn, "SHOW TABLES FROM queue LIKE '%room_%'");
while($table = mysqli_fetch_array($result)) {
echo("Altering {$table[0]}<br>");
if (!mysqli_query("ALTER TABLE {$table[0]} AUTO_INCREMENT = 1001");) {
echo 'Alter failded.';
} else {
echo 'Alter successful'
}
echo "<br>";
}
?>
作为附带说明,看到我们正在向查询中注入未知输入时,我通常建议使用准备好的语句,在此处可以找到其示例:How can I prevent SQL injection in PHP?(最佳答案)