Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mySql不会动态创建新表_Php_Mysql_Sql_Database_Create Table - Fatal编程技术网

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界面进行新的开发。改为使用mysqliPDO

当mysql\u select\u db由于数据库不存在而出错时,执行
CREATE database
语句

接下来,没有第二次调用mysql\u select\u db
来更改新创建的数据库

CREATE TABLE
语句可能遇到“no database selected”类型错误

调用mysql_query会导致SQL错误;检查是否成功完成是个好主意,而不仅仅是假设一切都按计划进行



而且,出于对这个世界上所有美好事物的热爱,不要使用mysql\uu界面进行新的开发。改用mysqliPDO

检查
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);]短]非常感谢!