如何在一个tables.sql文件中编写多个查询并使用php上传?

ndasle7k  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(431)

我只想使用 tables.sql 文件通过php。

php创建\u db.php

  1. <?php
  2. require 'config.php';
  3. $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD);
  4. /* check connection */
  5. if($mysqli->connect_errno){
  6. echo "MySQL connection failed.<br>";
  7. exit();
  8. }else{
  9. echo "MySQL successfully connected.<br>";
  10. }
  11. // DB create
  12. if($mysqli->query('CREATE DATABASE IF NOT EXISTS '.DB_NAME.';') === TRUE){
  13. echo "Database successfully created.<br>";
  14. }else{
  15. echo "Error: ".$mysqli->errno.", ".$mysqli->error."<br>";
  16. }
  17. // DB select
  18. if($mysqli->select_db(DB_NAME) === TRUE){
  19. echo "Database successfully selected.<br>";
  20. }else{
  21. echo "Error: ".$mysqli->errno.", ".$mysqli->error;
  22. }
  23. // Create tables
  24. if($mysqli->query(file_get_contents('../sql/tables.sql')) === TRUE){
  25. echo "Tables successfully created.<br>";
  26. }else{
  27. echo "Error: ".$mysqli->errno.", ".$mysqli->error."<br>";
  28. }
  29. $mysqli->close();
  30. ?>

db\u host、db\u user、db\u password、db\u name在config.php文件中定义
php版本7.4.7

sql表.sql

  1. CREATE TABLE IF NOT EXISTS `users` (
  2. `id` int(11) NOT NULL auto_increment,
  3. `username` varchar(100) NOT NULL,
  4. `password` varchar(100) NOT NULL,
  5. PRIMARY KEY (`id`)
  6. );
  7. CREATE TABLE IF NOT EXISTS `status` (
  8. `status` varchar(100) NOT NULL,
  9. `IDtime` varchar(100) NOT NULL
  10. );

如果我使用命令行将这个tables.sql文件直接上传到mysql服务器,它就可以工作了。
mysql v8.0.20 mysql comunity服务器-gpl

错误消息

错误:1064,您的sql语法有错误;检查与mysql服务器版本相对应的手册,以获得在“create table if not exists”附近使用的正确语法 status ( status varchar(100)不为空,`idt'位于第16行

dojqjjoe

dojqjjoe1#

mysqli::query只接受单个查询https://www.php.net/manual/en/mysqli.query.php.
如果要同时执行多个查询,必须使用mysqli::multi\u queryhttps://www.php.net/manual/en/mysqli.multi-query.php.
例子:

  1. $result = $mysqli->query("SELECT * FROM reservations;SELECT * FROM reservations");
  2. var_dump($result, $mysqli->error);
  3. bool(false)
  4. string(172) "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT * FROM reservations' at line 1"
  5. $result = $mysqli->multi_query("SELECT * FROM reservations;SELECT * FROM reservations");
  6. var_dump($result, $mysqli->error);
  7. bool(true)
  8. string(0) ""

相关问题