Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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一次构建2个新表_Php_Mysql - Fatal编程技术网

使用php一次构建2个新表

使用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

我试图立即构造新的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_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);
   }