PHP发出错误未定义的偏移错误

时间:2013-11-16 10:53:07

标签: php mysql arrays

我想比较两个MySQL表,如果不在table 2,则删除table 1列。我正在使用的代码是

<?php 

mysql_connect("localhost", "root", "") or die(mysql_error()); 
mysql_select_db("test") or die(mysql_error()); 


$fields = array();
$fields2 = array();
$dropcols = array();

$res=mysql_query("SHOW COLUMNS FROM table1");
$res2=mysql_query("SHOW COLUMNS FROM table2");

while ($x = mysql_fetch_assoc($res)) {
    $fields[] = $x['Field'];
}

while ($x = mysql_fetch_assoc($res2)) {
    $fields2[] = $x['Field'];
}

$diff = array_diff($fields2,$fields);

$arraylen = count($diff);

for ($x=0; $x < $arraylen; $x++) {
    mysql_query("ALTER TABLE table2   DROP  $diff[$x]");
}

有时候代码工作,有时会发出错误未定义的偏移量0.我不知道错误的位置。

2 个答案:

答案 0 :(得分:1)

array_diff没有重新索引结果数组的元素,它们保留索引fields,因此索引中存在间隙。无论索引如何,都使用foreach循环遍历数组值。

foreach ($diff as $column) {
    mysql_query(  "ALTER TABLE table2   DROP  $column");
}

或者你可以这样做:

$diff = array_values(array_diff($fields2, $fields));

答案 1 :(得分:-1)

有时数组$ diff将不包含任何值