2014-11-11 3 views
2

PHP에서 백엔드가있는 간단한 웹 응용 프로그램이 있습니다. 나는 3 시간 동안 노력했지만 문제를 해결할 수 없었다. 다음과 같이준비된 문장이 실행되지 않았습니다

내 코드는 다음과 같습니다

1 db_connect.php

<?php 

define("HOST", '127.0.0.1'); 
define("USER", 'root'); 
define("PASSWORD", ''); 
define("DB", 'tourist guide'); 


$con = new mysqli(HOST,USER,PASSWORD,DB); 

if ($con->connect_errno){ 
    die("Database Connection Failed"); 
    exit();  
} 

2. index.php를

<?php 

require_once 'db_connect.php'; 

$response = array();  
$result = ""; 


if (isset($_POST['firstname']) && isset($_POST['lastname']) && isset($_POST['email'])&& isset($_POST['password'])) { 

    $firstname = $_POST['firstname'];  
    $lastname = $_POST['lastname'];  
    $email = $_POST['email'];  
    $password = $_POST['password'];  

    $stmt = $con->prepare("INSERT INTO 
             user_accounts 
             (first_name,last_name,email,password) 
           VALUES 
             (?,?,?,?)"); 

    echo 'prepared statement executed. '; 

    $stmt->bind_param('ssss', $firstname, $lastname, $email, $password); 

    echo 'values given. '; 

    $result = $stmt->execute(); 

    echo 'statement is executed. '; 

    $stmt->close(); 

} 

if ($result) { 

    $response["success"] = 1; 
    $response["message"] = "account successfully created."; 
    echo json_encode($response); 

} else { 

    $response["success"] = 0; 
    $response["message"] = "An error occurred during registration."; 
    echo json_encode($response); 
} 

>

그리고? 출력은 다음과 같다. s :

prepared statement executed. values given. statement is executed. {"success":0,"message":"An error occurred during registration."} 

실수는 $result = $stmt->execute();이어야합니다. 내가 틀렸어? 또는 오류가 다른 것입니까? plz 도움.

UPDATE :

if(!$stmt->execute()){trigger_error("there was an error....".$con->error, E_USER_WARNING);} 

것은 이제 그는 실제 오류가 표시되고 : 내가 추가 프레드의 코멘트에서

오류가 외국 내 데이터베이스에 같은

Cannot add or update a child row: a foreign key constraint fails

보인다 열쇠 ... 나중에 해결할게. 오류에 대해 알고 있다면, 제발 ... 고마워. 프레드.

+1

DB 연결을 너무 빨리 종료하는 것처럼 보입니다. –

+0

@ Fred-ii- 그래서 $ stmt-> close();를 어디에 넣어야합니까?'$ stmt-> close();'를'echo json_encode ($ response); – xyz

+1

닫는'?>'태그 바로 앞에. 또한 양식 요소에 모두 name 속성이 있는지 확인하십시오. '

답변

3

질문을 닫으려는 OP의 요청에 따라 오류가 발견 된 것을 확인하십시오.

DB 연결을 너무 빨리 종료하는 것처럼 보입니다.

?> 태그 앞에 닫기 $stmt->close();을 입력하십시오.

$result = $stmt->execute();을 포함한 전체 if/else 대신 실제 오류를 확인하려면 if(!$stmt->execute()){trigger_error("There was an error....".$con->error, E_USER_WARNING);}으로 바꾸십시오.

당신은 또한 당신의 연결이 이제까지 실패 할 경우 실제 오류가 발생하는
die('Connection failed [' . $con->connect_error . ']');
으로 die("Database Connection Failed");를 교체해야합니다.

외래 키에 문제가 있음을 확인하십시오.

관련 문제