2017-04-24 13 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見つかった点数: –

答えて

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

これは、タイポになっています。これは近い投票の理由の1つです... – Shadow

+1

はい、タイプミスでした。君たちありがとう! – rdimouro

関連する問題