Php mySql不会动态创建新表
为什么我需要重新加载/刷新/运行此脚本两次 要在刚刚创建的新数据库下获取新表 瞧。。。此脚本工作正常,但不是第一次运行 只有在刷新之后,它才会创建新表Php mySql不会动态创建新表,php,mysql,sql,database,create-table,Php,Mysql,Sql,Database,Create Table,为什么我需要重新加载/刷新/运行此脚本两次 要在刚刚创建的新数据库下获取新表 瞧。。。此脚本工作正常,但不是第一次运行 只有在刷新之后,它才会创建新表 <?php $dbhost = '127.0.0.1'; $dbusername = 'root'; $dbuserpass = ''; $dbname = 'newDatabase'; $link_id = mysql_connect ($dbhost, $dbusername, $dbuserpass); if (!mysql_se
<?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);
?>
可能,如果数据库不存在,那么它不会选择它,因此创建表将失败
尝试将$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
$link_id = mysql_connect ($dbhost, $dbusername, $dbuserpass);
if (!mysql_select_db($dbname, $link_id)){
mysql_query('CREATE DATABASE '.$dbname, $link_id);
mysql_select_db($dbname, $link_id); //add this
}
尝试将$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_*函数的更新替代方案),但这涉及到更多到数据库的数据传输,因此使用这种方法将稍微更有效。尽管在这种情况下,这种效率可能可以忽略不计 由于数据库不存在而导致mysql\u select\u db出错时,将执行CREATE database
语句
<?php
$link_id = mysql_connect ($dbhost, $dbusername, $dbuserpass);
if (!mysql_select_db($dbname, $link_id)){
mysql_query('CREATE DATABASE '.$dbname, $link_id);
mysql_select_db($dbname, $link_id); //add this
}
接下来,没有第二次调用mysql\u select\u db
来更改新创建的数据库
CREATE TABLE
语句可能遇到“no database selected”类型错误
调用mysql_query会导致SQL错误;检查是否成功完成是个好主意,而不仅仅是假设一切都按计划进行
而且,出于对这个世界上所有美好事物的热爱,不要使用mysql\uu界面进行新的开发。改为使用mysqli或PDO。当mysql\u select\u db由于数据库不存在而出错时,执行CREATE database
语句
接下来,没有第二次调用mysql\u select\u db
来更改新创建的数据库
CREATE TABLE
语句可能遇到“no database selected”类型错误
调用mysql_query会导致SQL错误;检查是否成功完成是个好主意,而不仅仅是假设一切都按计划进行
而且,出于对这个世界上所有美好事物的热爱,不要使用mysql\uu界面进行新的开发。改用mysqli或PDO。检查mysql\u query()
和mysql\u error()
的返回值以查看是否有错误。旁注:不要使用mysql*()
——这些函数已弃用。使用mysqli_*()
或PDO
检查mysql_query()
和mysql_error()
的返回值以查看是否有错误。旁注:不要使用mysql*()——这些函数已弃用。使用mysqli.*()
或PDO
是的,我喜欢这种方法[比mysql\u select\u db($dbname,$link\u id)短]非常感谢!是的,我喜欢这种方法[比mysql_select_db($dbname,$link_id);]短]非常感谢!