2016-06-10 3 views
-1

Я пытаюсь запуска этого кода:MySQLi вставки в запрос не работает

<?php 

define('HOST', 'localhost'); 
define('USERNAME', 'root'); 
define('PASSWORD', ''); 
define('DATABASE', 'mydb'); 

$mysqli = new mysqli(HOST, USERNAME, PASSWORD, DATABASE); 
$query = "SHOW TABLES LIKE 'users'"; 
$result = $mysqli->query($query); 

if ($result->num_rows == 0) { 
    $query = "CREATE TABLE users (id INT UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password VARCHAR(100) NULL, name VARCHAR(50) NULL, phone VARCHAR(50) NULL, active BOOLEAN NOT NULL, PRIMARY KEY (id), UNIQUE (username)) ENGINE = MyISAM"; 

    if ($mysqli->query($query)) { 
     $query = "INSERT INTO users (id, username, password, name, phone, active) VALUES (1, admin, 321, idan, 123456789, 1), (2, guest, NULL, NULL, NULL, 1)"; 

     if ($mysqli->query($query)) { 
      echo 'BOTH table & data created!'; 
     } 
     else { 
      echo 'ONLY table created!'; 
     } 
    } 
    else { 
     echo 'NOTHING created!'; 
    } 
} 
else { 
    echo 'users table are exists!'; 
} 

$result->free(); 
$mysqli->close(); 

?> 

а в таблице пользователей не exiest, это эхо "ТОЛЬКО таблица создана! но это должно быть echo 'BOTH table & данные созданы!', может ли кто-нибудь помочь мне исправить это?

EDIT:

для других людей, которые будут иметь ту же проблему, что то, что это исправить: (спасибо u_mulder)

$query = "INSERT INTO users (id, username, password, name, phone, active) VALUES (1, 'admin', '321', 'idan', '123456789', 1), (2, 'guest', NULL, NULL, NULL, 1)"; 
+2

Start с использованием __quotes__ –

+1

Для расширения комментария @ u_mulder, в Строковые значения SQL ДОЛЖНЫ быть указаны. –

+0

@u_mulder Спасибо! это подходит для меня. –

ответ

0
Use quotes in your values, try this, it works fine 

<?php 

define('HOST', 'localhost'); 
define('USERNAME', 'root'); 
define('PASSWORD', ''); 
define('DATABASE', 'mydb'); 

$mysqli = new mysqli(HOST, USERNAME, PASSWORD, DATABASE); 
$query = "SHOW TABLES LIKE 'users'"; 
$result = $mysqli->query($query); 

if ($result->num_rows == 0) { 
    $query = "CREATE TABLE users (id INT UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password VARCHAR(100) NULL, name VARCHAR(50) NULL, phone VARCHAR(50) NULL, active BOOLEAN NOT NULL, PRIMARY KEY (id), UNIQUE (username)) ENGINE = MyISAM"; 

    if ($mysqli->query($query)) { 
     $query = "INSERT INTO users (id, username, password, name, phone, active) VALUES ('1', 'admin', '321', 'idan', '123456789', '1'), ('2', 'guest', 'NULL', 'NULL', 'NULL', '1')"; 

     if ($mysqli->query($query)) { 
      echo 'BOTH table & data created!'; 
     } 
     else { 
      echo 'ONLY table created!'; 
     } 
    } 
    else { 
     echo 'NOTHING created!'; 
    } 
} 
else { 
    echo 'users table are exists!'; 
} 

$result->free(); 
$mysqli->close(); 

?> 
+0

Я пробовал это, значения NULL поступают как строки, а не как значения NULL, поэтому кавычки используются для значений только строки ... –

+0

да PLZ использовать в соответствии с типом данных, он был обобщен – User2403

Смежные вопросы