为什么我的第二个if永远不会执行?好像继续句子使我脱颖而出。我尝试了elseif,但没有成功。
foreach($columns as $i=>$column)
{
// Check if column exists
$sql = "SELECT '$column' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$database' AND TABLE_NAME = '$strTable'";
if(mysqli_real_query($link, $sql))
{
echo 'Column '.$column.' was created! <br>';
continue;
}
$sql = "alter table '$strTable' add column '$column' varchar (30)";
if(mysqli_real_query($link, $sql))
{
echo 'Column '.$column.' was created! <br>';
}
$cols .= $column.',';
}
您不测试查询是否发现任何行。只要没有出现错误,mysqli_real_query()
就会成功,但这并不意味着查询匹配任何内容。您需要获取查询结果。
此外,您只是在检查表是否存在,而不是在表中是否存在该列。
continue
跳过整个循环主体。当找不到该列时,应使用else
执行第二个块。
如果要使用结果,请使用mysqli_query()
。否则,您需要先调用mysqli_use_result()
和mysqli_store_result()
。参见difference between mysqli_query and mysqli_real_query
foreach($columns as $column)
{
// Check if column exists
$sql = "SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = '$database' AND TABLE_NAME = '$strTable' AND COLUMN_NAME = '$column'";
$result = mysqli_query($link, $sql);
if(mysqli_num_rows($result) > 0)
{
echo 'Column '.$column.' already exists! <br>';
} else {
$sql = "alter table '$strTable' add column '$column' varchar (30)";
if(mysqli_real_query($link, $sql))
{
echo 'Column '.$column.' was created! <br>';
}
}
$cols .= $column.',';
}