使用php一次构建2个新表
我试图立即构造新的mysql表:使用php一次构建2个新表,php,mysql,Php,Mysql,我试图立即构造新的mysql表: public function connect() { mysql_connect($this->host,$this->username,$this->password) or die("Could not connect. " . mysql_error()); mysql_select_db($this->table) or die("Could not select database. " . mysql_err
public function connect() {
mysql_connect($this->host,$this->username,$this->password) or die("Could not connect. " . mysql_error());
mysql_select_db($this->table) or die("Could not select database. " . mysql_error());
return $this->buildDB();
}
private function buildDB() {
$sql = <<<MySQL_QUERY
CREATE TABLE IF NOT EXISTS projects (
title VARCHAR(300),
projectid VARCHAR(100)
)
CREATE TABLE IF NOT EXISTS owners (
projectid VARCHAR(100),
owners VARCHAR(150)
)
MySQL_QUERY;
return mysql_query($sql);
}
公共功能连接(){
mysql_connect($this->host,$this->username,$this->password)或die(“无法连接”。.mysql_error());
mysql_选择_db($this->table)或die(“无法选择数据库。”.mysql_error());
返回$this->buildDB();
}
私有函数buildDB(){
根据文档,$sql=不能在一次调用中运行多个语句:(emphasis mine)
mysql\u query()发送一个唯一的查询(不支持多个查询)
受支持的)到正在运行的服务器上的当前活动数据库
与指定的链接标识符关联
您需要将语句拆分为对mysql\u query
的单独调用,或者使用mysqli
库,而不是
如果使用mysql\u query
执行拆分查询路径,一种简单的方法是像在单个脚本中一样使用;
终止语句,然后运行PHP命令围绕;
进行拆分(如或)。然后循环每个输出字符串,一次执行一个
EDIT:关于您的更新:您需要将return
语句移动到循环底部之外,否则它会在第一次查询之后立即返回给函数的调用方
相关的SO问题(如果你尝试了,你会发现什么,不是吗):
- 啊..这么多..这么多
这是您在那里运行的两个查询,据我所知,只有MySQLi支持多个查询。您应该检查一下因此,我使用split更新了原始问题,然后使用foreach语句迭代每个“创建表”。不幸的是,只有第一个表(项目)已创建。有什么想法吗?请参阅我对该问题的评论。不要将答案合并到您的问题中,因为这会使答案不相关并混淆问题。将问题恢复正常,或将更新的代码作为更新部分添加到您的问题中。我们可以通过评论继续此转换,或开始新的转换询问是否太复杂。您是否可以转储正在执行的查询,即var\u dump($value)
,并确保它们看起来正常。此外,确保使用error\u reporting(1)
报告任何错误消息,并检查mysql\u error()的内容
每次查询后。实际上,问题似乎是您在说return
,因此在第一次迭代后,它会立即将值返回给调用者…不要更新您的问题以包含答案。如果答案有效,请将其标记为正确,或者评论其不起作用的原因。如果您对新的编码,开始一个新问题。这使答案不再与您的问题相关。它只起了一半作用。只创建了第一个表。很抱歉编辑了原始表,我只是不确定在哪里显示工作。显示新信息的一个好方法是在您的问题底部添加一个**编辑**
或**更新**
部分评估并显示更改和新问题,以便保留原始问题并与之相关。如果问题变得太复杂,此时最好开始一个新问题并解决新问题。如果确实开始一个新问题,您可以始终链接到此问题以提供一些上下文。您需要移动return
语句to在循环的底部之外,否则它会在第一次查询之后立即返回给函数的调用方。
private function buildDB() {
$sql = <<<MySQL_QUERY
CREATE TABLE IF NOT EXISTS projects (
title VARCHAR(300),
tags VARCHAR(390),
description TEXT,
created VARCHAR(100),
projectimg VARCHAR(150),
savethumb VARCHAR(150),
owners VARCHAR(150),
projectid VARCHAR(100),
projecturl VARCHAR(150)
);
CREATE TABLE IF NOT EXISTS owners (
projectid VARCHAR(100),
owners VARCHAR(150)
)
MySQL_QUERY;
$arr = split(";", $sql);
foreach($arr as &$value) {
return mysql_query($value);
}