PHP循环更改多个mysql表

时间:2018-10-08 15:32:38

标签: php mysqli

我知道不可能一次更改多个表,所以我正在构建自己的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的新手,而我被困在最后一部分。我不知道是否需要在循环之前进行数组到字符串的转换。如果有人可以告诉我如何使它以正确的方式工作,我将不胜感激。谢谢。

1 个答案:

答案 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?(最佳答案)