我需要一次创建多个表。我很难找出正确的方法来完成此任务。目前,我的脚本如下所示:
private function buildDB() { $sql = <<<MySQL_QUERY CREATE TABLE IF NOT EXISTS headings ( type VARCHAR(150), heading VARCHAR(100), uniqueid VARCHAR(100) ) CREATE TABLE IF NOT EXISTS titles ( type VARCHAR(150), heading VARCHAR(100), uniqueid VARCHAR(100) ) MySQL_QUERY; return mysql_query($sql); }
显然,这是行不通的,并且不会创建任何表。有一种简单的方法可以一次创建多个表吗?
MySQL变得令人困惑,因为您没有划定查询范围。在第一条CREATE语句后添加分号:
CREATE
private function buildDB() { $sql = <<<MySQL_QUERY CREATE TABLE IF NOT EXISTS headings ( type VARCHAR(150), heading VARCHAR(100), uniqueid VARCHAR(100) ); CREATE TABLE IF NOT EXISTS titles ( type VARCHAR(150), heading VARCHAR(100), uniqueid VARCHAR(100) ) MySQL_QUERY; return mysql_query($sql); }
另外,根据Heredoc文档,请确保MySQL_QUERY位于行的开头, 没有其他字符,除了分号外 。
MySQL_QUERY
鉴于上述方法似乎无效,请尝试以下代码:
private function buildDB() { $sql1 = "CREATE TABLE IF NOT EXISTS headings ( type VARCHAR(150), heading VARCHAR(100), uniqueid VARCHAR(100))"; $sql2 = "CREATE TABLE IF NOT EXISTS titles ( type VARCHAR(150), heading VARCHAR(100), uniqueid VARCHAR(100))"; MySQL_QUERY; return mysql_query($sql1) && mysql_query($sql2); }
您 可以 使用mysqli_multi_query()(MySQL版本不存在),但是那时您必须使用MySQLi。上面的代码返回两个查询的逻辑与,因此,0如果一个查询失败,您仍然会得到返回。
mysqli_multi_query()
0