php - mySql 没有即时创建新表

标签 php mysql sql database create-table

为什么我需要重新加载/刷新/运行这个脚本两次 获取刚刚创建的新数据库下的新表?

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/

相关文章:

sql - 缓慢的 PostgreSQL 函数

mysql - 如何选择在项目上工作时间最长的员工

cfquery INSERT INTO 中的 cflooping 时出现 sql 语法错误

php - 如果可选参数不在列表中,Laravel 处理默认路由

php - Mysql 查询其中列有多个值

php - Symfony 自动服务加载失败并显示 "Class does not exist"

php - mysql 在给定后查找下一个日期

php - 尽管在 mysql 数据库中可用,但 Codeigniter 未获取数据

php - 从php中的单个表单上传多个图像以及文本字段

MySQL - WHERE 子句中的数字和文本