php - PHP : 继续让我出去
问题描述
为什么我的第二个 if 从未被执行?似乎继续句子让我脱离了foreach。我试过 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()
and mysqli_store_result()
;查看mysqli_query 和 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.',';
}
推荐阅读
- pandas - 获取每组变量分位数的值
- python - Plotly 图在 HTML 页面中显示为空白
- r - 根据时间对数据框进行条件添加或行
- data-structures - python3 - 删除一个节点
- wordpress - Woocommerce B2B 插件是否需要?
- postgresql - 如何在 liquibase 中设置当月第一个日期和下个月的默认值?
- pdf - 无法单击 PDF 中的签名字段,但在 Adobe Acrobat Reader 上打开并保存后可以使用
- onedrive - Microsoft Graph SDK OneDrive uploadSession 错误代码:BadRequest
- python - ElementTree 写入方法意外返回 TypeError
- visual-studio - 下载 Clickonce 时如何排除特定文件?