2017-04-24 6 views
-1

나는 프로그램에 새로운 사용자를 추가하도록 고안된 페이지가있다. 생성 버튼을 클릭하면 정보가 POST를 통해 PHP 스크립트로 보내져 로그인을 실행하고 암호를 암호화하고 준비된 문을 사용하여 MySQL에 데이터를 삽입합니다. 그러나 다음과 같은 오류가 발생하여 계속 이유가 확실하지 않습니다.MySQL/PHP 준비된 문장 삽입 오류

준비가 실패했습니다. (1064) SQL 구문에 오류가 있습니다. 줄에서 ''1

내 스크립트를 근처에 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인 :

<?php 

include("inc.php"); 

if ((isset($_POST['firstname'])) and (isset($_POST['lastname'])) and (isset($_POST['company'])) and (isset($_POST['statusflag'])) and (isset($_POST['username'])) and (isset($_POST['password'])) and (isset($_POST['passwordConfirm']))) { 

    $firstname = $_POST['firstname']; 
    $lastname = $_POST['lastname']; 
    $email = $_POST['email']; 
    $phone = $_POST['phone']; 
    $company = $_POST['company']; 
    $department = $_POST['department']; 
    $statusflag = $_POST['statusflag']; 
    $admin = $_POST['admin']; 
    $revoked = $_POST['revoked']; 
    $login = $_POST['username']; 
    $pass = $_POST['password']; 
    $passConfirm = $_POST['passwordConfirm']; 

} else { 

    echo "Values did not save. Please try again."; 
} 



if ($pass == $passConfirm) { 


    $passEnc = password_hash($pass, PASSWORD_DEFAULT); 


    $conn = new mysqli($servername, $username, $password, $dbname); 


    if ($conn->connect_errno) { 
     echo "There was a problem connecting to MySQL: (" . $conn->connect_errno . ") " . $conn->connect_error; 
    } 


    if (!($sql = $conn->prepare("INSERT INTO sched_users(login, password, firstname, lastname, email, phone, company, department, admin, statusflag, revoked) VALUES (?,?,?,?,?,?,?,?,?,?,?"))) { 
     echo "Prepare failed: (" . $conn->errno . ") " . $conn->error; 
    } 


    if (!$sql->bind_param("sssssssiiss", $login, $passEnc, $firstname, $lastname, $email, $phone, $company, $department, $admin, $statusflag, $revoked)) { 
     echo "Binding parameters failed: (" . $sql->errno . ") " . $sql->error; 
    } 


    if (!$sql->execute()) { 
     echo "Execute failed: (" . $sql->errno . ") " . $sql->error; 
    } 


    $sql->close(); 
    $conn->close(); 


} else { 

    echo "Passwords don't match. Please try again."; 
} 

?> 

내 표를 제외하고 동일한 순서로 똑같은 열이 첫 번째 열 (id)은 자동 증가 기본 키입니다. 이 열은 MySQL이 자동 증가를 처리 할 때 Insert에 포함될 필요가 없습니다.

모든 도움을 주실 수 있습니다.

감사합니다.

+6

')'잘못된 위치에/누락되었습니다. –

+0

@JonStirling Nah 그는 그것을 놓치고 있습니다. 그는 자신의 조건을 괄호로 묶습니다. – Daerik

+0

@Daerik Spotted and updated comment : –

답변

0

첫 번째 오류 : if

if (!($sql = $conn->prepare("INSERT INTO sched_users(login, password, firstname, lastname, email, phone, company, department, admin, statusflag, revoked) VALUES (?,?,?,?,?,?,?,?,?,?,?"))) { 

체크 마지막 :와

"))) 

remplace :

if (!($sql = $conn->prepare("INSERT INTO sched_users(login, password, firstname, lastname, email, phone, company, department, admin, statusflag, revoked) VALUES (?,?,?,?,?,?,?,?,?,?,?)"))) 
+5

어느 쪽이 오타가 되었습니까? 가까운 투표 이유 중 하나입니다 ... – Shadow

+1

네, 오타였습니다. 고마워요! – rdimouro