PHP:继续让我出去

问题描述 投票:-3回答:1

为什么我的第二个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.','; 
        }
php continue
1个回答
1
投票

您不测试查询是否发现任何行。只要没有出现错误,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.','; 
}
© www.soinside.com 2019 - 2024. All rights reserved.