为什么我需要重新加载/刷新/运行这个脚本两次 获取刚刚创建的新数据库下的新表?
IOW...此脚本运行良好,但首次运行时并非如此。
只有在刷新后它才会创建新表。
<?php
$dbhost = '127.0.0.1';
$dbusername = 'root';
$dbuserpass = '';
$dbname = 'newDatabase';
$link_id = mysql_connect ($dbhost, $dbusername, $dbuserpass);
if (!mysql_select_db($dbname, $link_id)){mysql_query('CREATE DATABASE '.$dbname, $link_id);}
$sql = "CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8";
mysql_query($sql);
?>
最佳答案
可能,如果数据库不存在,那么它不会选择它,因此 CREATE TABLE 会失败。
尝试将 $sql
查询更改为:
$sql = "CREATE TABLE IF NOT EXISTS `" . $dbname . "`.`users` (
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8";
编辑: 正如其他人所建议的那样,另一种可能的解决方案是调用 mysql_select_db (或您最喜欢的 mysql_* 函数的更新替代方法),但这涉及到向数据库传输更多数据,因此使用此方法会稍微更有效率。尽管在这种情况下效率可能可以忽略不计!
关于php - mySql 没有即时创建新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22797309/