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- – Rizier123

답변

2

call은 MySQL 예약어입니다.

다른 나에 포장 뭔가

어느 이름이 mysqli_query()-or die(mysqli_error($con)) 오류가 신호 것 사용

INSERT INTO `call` ... 

틱.

빠른 참고 : call 저장 프로 시저에 사용되는 단어입니다. "CALL 문은 CREATE PROCEDURE에 함께 이전에 정의 된 저장 프로 시저를 호출"

이 때문에 테이블 이름 주위에 진드기를 사용하거나 "통화"로 이름을 지정해야합니다.

(!) 참고 :

현재의 코드가 SQL injection에게 열려 있습니다. prepared statements 또는 PDO with prepared statements, 을 사용하면 더 안전합니다.

+0

내 마음이 바뀌었다 ... 감사합니다. – Zapper

+0

@ user2653581 대단히 환영합니다. * 환호성 * –

0

필자는 $ typestamp 대신 $timpestamp=$record["timestamp"]; 대신에 오타라고 생각하며 Fred -ii-가 말한 것처럼 호출은 MySQL 예약어입니다.

+0

OP가 '$ record'를 어딘가에서 가져갈 수 있다고 생각합니다. 그것이 게시되는 방식에 게시되지 않았습니다. 어떻게 그것들이'$ record'로 시작하는지 주목하십시오. –

관련 문제