2014-11-29 2 views
1

Я возвращаю содержимое формы из массива и добавляю его к переменным. (Переменные не пустые, я проверил с помощью эха). Я пытаюсь вернуть успех в JSON, если мое содержимое добавлено в базу данных, но я не могу этого сделать. Я получаю результат как false.невозможно вставить в базу данных с помощью msqli_query

$ con создан правильно, а также отлично работает для запроса «select» на этом соединении непосредственно перед этой частью кода, отображаемой ниже. Я добавил инструкцию $ con ниже для лучшего понимания.

$con = mysqli_connect($mysql_host, $mysql_user, $mysql_password, $mysql_database) or die(mysql_error()); 
$id=$record["id"]; 
$caller=$record["caller"]; 
$receiver=$record["receiver"]; 
$mapurl=$record["mapurl"]; 
$timestamp=$record["timestamp"]; 
$res=mysqli_query($con,"INSERT INTO call (id,caller,receiver,mapurl,timestamp) VALUES ('$id','$caller','$receiver','$mapurl','$timestamp')"); 
if ($res) { 
$response["success"] = 1; 
$response["message"] = "Added the Values in the Database"; 
echo json_encode($response); 
} 
else{ 
$response["success"] = 0; 
$response["message"] = "Insert Not Successful"; 
echo json_encode($response); 
} 

Мой выход:

{"success":0,"message":"Insert Not Successful"} 

Моя структура базы данных:

(я не могу опубликовать изображение здесь, как я имеют низкую репутацию и нужно 10 репутации сделать это)

MySQL 
Table name: call 

Columns - Datatypes 
id - int(255) 
caller - text 
receiver - text 
mapurl - text 
timestamp - text 
+0

Возможный дубликат [Создание имен таблиц, зарезервированных слов/ключевых слов в MS SQL Server] (http://stackoverflow.com/questions/695578/creating-table-names-that-are-reserved-words-keywords- in-ms-sql-server) – Rizier123

ответ

2

call является зарезервированным словом MySQL

либо имя его на что-то другое или обернуть его в клещи

INSERT INTO `call` ... 

с помощью or die(mysqli_error($con)) к mysqli_query() бы сигнал об ошибке.

Быстрый FYI:

: call это слово, которое используется для хранимых процедур "Оператор ВЫЗОВ вызывает хранимую процедуру, которая была определена ранее с CREATE PROCEDURE."

Именно поэтому вы должны использовать тики вокруг имени таблицы или называть ее «вызовами».

Sidenote:

Ваш нынешний код открыт для SQL injection. Используйте prepared statements, или PDO with prepared statements, они намного безопаснее.

+0

Плохо, что это было просто из моего ума ... спасибо – Zapper

+0

@ user2653581 Вы очень приветствуете, * cheers * –

0

Я думаю, что это только опечатка, вы писали: $timpestamp=$record["timestamp"]; вместо $ timestamp и, как сказал Фред -ii-, вызов - зарезервированное слово MySQL.

+0

Я думаю, что OP может принимать '$ record' где-то, что не опубликовал, как он заселен. Обратите внимание, как все начинается с '$ record'. –

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