gpt4 book ai didi

php - 如果在检查数据库中的所有表后存在表中的列,如何修改该列?

转载 作者:行者123 更新时间:2023-11-29 11:59:03 24 4
gpt4 key购买 nike

这是我现在的代码:

 <?php
// your connection
mysql_connect("localhost","user","password");
mysql_select_db("database");

// convert code
$res = mysql_query("SHOW TABLES");
while ($row = mysql_fetch_array($res))
{
foreach ($row as $key => $table)
{
$fields = mysql_list_fields($table);
$columns = mysql_num_fields($fields);
for ($i = 0; $i < $columns; $i++) {$field_array[] = mysql_field_name($fields, $i);}

if (in_array('customer_id', $field_array))
{
$result = mysql_query("ALTER TABLE " . $table . " MODIFY customer_id INT(11), CHANGE VARCHAR(12)");
}

echo $key . " =&gt; " . $table . " CONVERTED<br />";
}
}
?>

代码运行,但未进行任何更改。对于它查询的每个表,我都会得到这样的一行:

0 => $table CONVERTED

同时在服务器日志中获取此内容:

PHP Notice:  Undefined variable: field_array in /home/bruce/public_html/cat/admx/tables.php on line 16

对此有什么帮助吗?

最佳答案

我发现您的程序存在一些问题:

  • 不必要的内部枚举。
  • 调用 mysql_list_fields() 时缺少数据库参数。
  • 将 field_array 初始化为空数组,然后用当前处理的表的字段填充它。
  • 使用已弃用的函数并且没有标识;-(

我做了一些更正:

<?php
$host = "localhost";
$user = "youruser";
$password = "yourpassword";
$dbname = "yourdatabasename";

$link = mysql_connect($host, $user, $password);
if (!$link)
die("Could not connect: ".mysql_error());

$db = mysql_select_db($dbname);
if (!$db)
die ("Can't select database $dbname: ".mysql_error());

$res = mysql_query("SHOW TABLES");
while ($row = mysql_fetch_array($res)) {
$table = $row[0];
$fields = mysql_list_fields($dbname, $table);
$columns = mysql_num_fields($fields);
$field_array = array();
for ($i = 0; $i < $columns; $i++)
$field_array[] = mysql_field_name($fields, $i);
if (in_array("customer_id", $field_array)) {
$sql = "ALTER TABLE " . $table . " MODIFY customer_id INT(11), CHANGE VARCHAR(12)";
$result = mysql_query($sql);
echo "$table - altered<br>\n";
}
else
echo "$table - no changes necessary<br>\n";
}
?>

如果效果更好请告诉我;-)

关于php - 如果在检查数据库中的所有表后存在表中的列,如何修改该列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32682454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com