2015-05-27 2 views
2

Привет, ребята Я пытаюсь запустить sql-запрос через php, но im получаю ошибку, которую я не могу исправить.php sql query, который не работает на php

$sql = 'DROP TABLE IF EXISTS Stats; 
    CREATE TABLE Stats (
    id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    name varchar(255) , 
    Type int , 
     below int , 
    meeting int , 
    exceeding int 
    ); '; 



if (mysqli_query($con, $sql)) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($con); 
} 

Ant это дает мне эту ошибку

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 'CREATE TABLE Stats (id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, name varc' at line 2

Однако если я удалю DROP TABLE IF EXISTS Stats; Line Она работает

$sql = 'CREATE TABLE Stats (
id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    name varchar(255) , 
    Type int , 
    below int , 
    meeting int , 
    exceeding int 
); '; 

Я получаю

Error: CREATE TABLE Stats (id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, name varchar(255) , Type int , below int , meeting int , exceeding int); Table 'stats' already exists

Потому что я получаю сообщение Table 'stats' already exists

Любые причины или идеи относительно того, как исправить эту проблему, были бы очень оценены.

ответ

1

mysqli_query() не поддерживает несколько заявлений. Поэтому вы должны называть это 2 раза. Сначала отбросьте стол и secont, чтобы воссоздать его.

$sql = 'DROP TABLE IF EXISTS Stats;'; 

if (mysqli_query($con, $sql)) { 
    echo "Table successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($con); 
} 


    $sql = '  CREATE TABLE Stats (
    id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    name varchar(255) , 
    Type int , 
     below int , 
    meeting int , 
    exceeding int 
    ); '; 
if (mysqli_query($con, $sql)) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($con); 
} 
+1

Если mysqli_query не поддерживает несколько операторов, то он может использовать mysqli_multi_query вместо mysqli_query. –

1

Вы можете попробовать это: От

$sql = 'DROP TABLE IF EXISTS Stats; 
    CREATE TABLE Stats (
    id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    name varchar(255) , 
    Type int , 
     below int , 
    meeting int , 
    exceeding int 
    ); '; 

Для

$sql = 'CREATE TABLE IF NOT EXISTS Stats (
     id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, 
     name varchar(255) , 
     Type int , 
      below int , 
     meeting int , 
     exceeding int 
     ); '; 
0

Вы можете использовать mysqli_multi_query() для выполнения одного или нескольких запросов.

Также читайте mysqli_multi_query для выполнения нескольких Заявление о

как: -

$query = "DROP TABLE IF EXISTS Stats;"; 
$query .= "CREATE TABLE Stats (
    id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    name varchar(255) , 
    Type int , 
     below int , 
    meeting int , 
    exceeding int 
    );"; 

/* execute multi query */ 
if ($mysqli->multi_query($con,$query)) { 
     //your code here 
} 

И для этой ошибки: -

Table 'stats' already exists

используется

CREATE TABLE IF NOT EXISTS `Stats` 

в вашем создать statement