How to do multiple queries to SQL

2019-03-06 17:48发布

问题:

I am trying to create a table and , insert some values in database with help of PHP script. While inserting only 1 row , it works fine. An when I try to enter more number of rows , It gives error;

I need to write whole insert statement for every query as I am using an online excel to SQL query converter.

<?php

error_reporting(E_ALL);
ini_set('display_errors', '1');
include_once("connect_to_Mysql.php");
$sqlCommand = "CREATE TABLE book (
Book_Index INT,
Book_name VARCHAR(38) CHARACTER SET utf8,
author_name VARCHAR(5) CHARACTER SET utf8,
Publisher VARCHAR(5) CHARACTER SET utf8,
Category INT,
Subcategory VARCHAR(21) CHARACTER SET utf8,
Price INT)";

$query = mysqli_query($db_conx,$sqlCommand) or die(mysqli_error($db_conx));
echo "<h3>Success creating book table</h3>";

$sqlCommand = "
INSERT INTO book VALUES (1,'Concepts of Physics Volume I','hc verma','bharti bhavan','jee','physics',635,'english');
 INSERT INTO book VALUES (2,'PLANE TRIGONOMETRY Part-1','sl loni','arihant publication','jee','math',95,'english');
 INSERT INTO book VALUES (3,'VIT (VELLORE) EDGE SOLVED PAPERS & 10 MOCK        TESTS (2007-2015)','Arihant Experts','arihant publication','vit','all in one',345,'english');
 INSERT INTO book VALUES (4,'A Textbook of Algebra','sk goyal','arihant publication','jee','math',425,'english');
INSERT INTO book VALUES (5,'New Pattern IIT JEE PHYSICS','dc pandey','arihant publication','jee','physics',665,'english');
INSERT INTO book VALUES (6,'Objective Approach to Mathematics','amit m aggrawal','arihant publication','jee','math',710,'english');
INSERT INTO book VALUES (7,'A Complete Success Package for','Experts Compilation','arihant publication','bitsat','all in one',775,'english');
INSERT INTO book VALUES (8,'15 Years'' Solved Papers for AMU Engineering     Entrance Exam','arihant Experts','arihant publication','AMU','all in one',325,'english');
INSERT INTO book VALUES (9,'Solved Papers & 5 Mock Tests for BVP Engineering','arihant Experts','arihant publication','BVP','all in one',365,'english');

";
$query = mysqli_query($db_conx,$sqlCommand) or die(mysqli_error($db_conx));
echo "<h3>Success populating the pages table with data</h3>";

?>

OUTPUT

Successful database connection, happy coding!!!
Success creating book table
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 'INSERT INTO book VALUES (2,'PLANE TRIGONOMETRY Part-1','sl loni','arihant public' at line 2

回答1:

Use mysqli_multi_query instead of mysqli_query, that should do it.

$query = mysqli_multi_query($db_conx,$sqlCommand) or die(mysqli_error($db_conx));

http://php.net/manual/en/mysqli.multi-query.php



回答2:

An easier approach could be to split the string with ; and iterate of each query in the array. Execute all of them one by one..

$sqlCommandArray[]=explode(";",$sqlCommand);

for($i=0;$i<count($sqlCommandArray);$i++){
try{
  mysqli_query($db_conx,$sqlCommandArray[$i]);
} 
catch(Exception $ex){
  echo "there was an error in executing the queries";
}
}

This would do the job without any modifications.

 $query = mysqli_multi_query($db_conx,$sqlCommand);