今天非常沮丧,试图让这个工作。
如果不存在,我需要在我的php脚本开头附近创建大约20个表。
显而易见的方法是SQL查询CREATE IF NOT EXIST但是我不想查询数据库20次,只是为了检查它们是否存在,只有当我想创建它们时。
我已经尝试循环遍历我的表数组然后使用SHOW ALL FROM数据库然后比较表名,但这不起作用(我不知道为什么)。
$result=$db->query("SHOW TABLES FROM database");
$numrows=mysql_num_rows($result);
echo $numrows.' tables';
$found=null;
foreach ($table as $name => $fields) {
while ($showall=mysql_fetch_array($result)) {
if ($name==$showall[0]) {
unset($found);
}
}
if (isset($found)) {
echo 'Table '.$name.' does not exist, creating...<br />';
$db->query("CREATE TABLE ".$name." (".$fields.")");
} else {
echo 'Table '.$name.' exists<br />';
//$db->query("CREATE TABLE ".$name." (".$fields.")");
}
这是我的代码到目前为止(版本4,我估计,经过数小时试图让它工作)。如您所见,我在循环内循环并在找到匹配时取消设置变量。这听起来很简单,它应该可以工作,但事实并非如此。
答案 0 :(得分:0)
您只是将$ found变量声明两次,并且两次都声明为null。因此,您的代码永远不会进入
if (isset($found)) {
echo 'Table '.$name.' does not exist, creating...<br />';
$db->query("CREATE TABLE ".$name." (".$fields.")");
}
也许有问题?