通过PHP错误调用prepare()创建MySQLi表

时间:2014-02-10 22:24:29

标签: php sql web mysqli

我使用PHP自动生成带有表的数据库,但由于某种原因,我在调用table3的prepare语句时遇到错误。我已经尝试梳理它并重新写了很多次,但我只是没有看到我所缺少的东西。你能救我一下吗?

$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_DB);

$table1 = 'CREATE TABLE ArtecAdmins
  (
    id INT NOT NULL AUTO_INCREMENT,
    Username VARCHAR(160) NOT NULL,
    Password VARCHAR(160) NOT NULL,
    PRIMARY KEY(id)
  )';

$table2 = 'CREATE TABLE ArtecRacers
  (
    id INT NOT NULL AUTO_INCREMENT,
    Firstname VARCHAR(50) NOT NULL,
    Lastname VARCHAR(50) NOT NULL,
    Banner VARCHAR(150),
    Bio TEXT(1000),
    PRIMARY KEY(id)
  )';

$table3 = 'CREATE TABLE Parts
  (
    id INT NOT NULL AUTO_INCREMENT,
    sku VARCHAR(20) NOT NULL,
    PRIMARY KEY(id)
  )';

$table4 = 'CREATE TABLE PartsUsed
  (
    id INT NOT NULL AUTO_INCREMENT,
    ItemID INT NOT NULL,
    RacerID INT NOT NULL,
    Used INT NOT NULL,
    PRIMARY KEY(id),
    FOREIGN KEY(ItemID) REFERENCES Parts(id),
    FOREIGN KEY(RacerID) REFERENCES ArtecRacers(id)
  )';

$makeTables = $mysqli
  ->prepare($table1)
  ->prepare($table2)
  ->prepare($table3) //Error happens here...
  ->prepare($table4)
  ->execute();

我收到的错误说我在非对象上调用prepare函数。我确信这很简单,但我很难过。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

  1. 你不能使用这样的准备。执行可以被多次调用,而不是准备。
  2. 你根本不需要准备。只运行$ mysqli-> query()四次