2017-03-09 2 views
-1

エラーはありませんが、クエリはデータベースにデータを挿入しません。 最初のクエリ作業も2番目のクエリは機能しますが、$ carnaクエリは挿入されませんINSERTクエリはエラーを挿入しません。

$ carnaクエリは問題です。

コード:

<form method="POST" name="loginform"> 
    <input type="text" placeholder="Naam" id="nane" name="name" required=""/> 
    <input type="text" placeholder="Gebruikersnaam" id="username" name="username" required=""/> 
    <input type="password" placeholder="Wachtwoord" id="password" name="password" required=""/> 
    <button type="submit">Registreren</button><br><br> 
    <button type="button" onclick="location.href='adminreg.php';">Admin Registreren</button><br><br> 
    <button type="button" onclick="location.href='overzicht.php';">Terug</button> 
</form> 

<?php 
include("dbconfig.php"); 
if($_SERVER["REQUEST_METHOD"] == "POST") 
{ 
// username and password received from loginform 
$username=mysqli_real_escape_string($dbconfig,$_POST['username']); 
$password=mysqli_real_escape_string($dbconfig,$_POST['password']); 
$name=mysqli_real_escape_string($dbconfig,$_POST['name']); 

$password = password_hash($password, PASSWORD_BCRYPT); 

$sql_query="INSERT INTO gebruikers (gebruikerscode, wachtwoord, naam) VALUES ('$username', '$password', '$name')"; 
$bericht = mysqli_query($dbconfig, $sql_query); 
$haalop_query="SELECT id FROM gebruikers WHERE gebruikerscode = '$username' and wachtwoord = '$password'"; 
$ophalen = mysqli_query($dbconfig, $haalop_query); 
$fetch = mysqli_fetch_assoc($ophalen); 
$id = $fetch["id"]; 
$carna = "INSERT INTO carnavalvakantie (user_id) VALUES ($id)"; 
$test = mysqli_query($dbconfig, $carna); 

print_r($test); 

if($bericht == true) { 

    echo '<br><div class="container"><div class="alert alert-succes" role="alert"> 
<b>Gelukt!</b> Gebruiker is aangemaakt. 
</div></div>'; 
} 
} 
?> 

は、あなたたちは私を助けることができると思います。ありがとうございます。

PDOバージョン:

$pdo = new PDO("mysql:host=localhost;dbname=btt; charset-utf8","root", ""); 

if (isset($_POST['submit'])) 
{ 
$username=$_POST['username']; 
$password=$_POST['password']; 
$name=$_POST['name']; 
$password = password_hash($password, PASSWORD_BCRYPT); 

$query = $pdo->prepare("INSERT INTO gebruikers (gebruikerscode, wachtwoord, naam) VALUES (:user, :pass, :name)"); 
$query->execute(array(
    ':user' => $username, 
    ':pass' => $password, 
    ':name' => $name 
)); 

$ophalen = $pdo->prepare("SELECT id FROM gebruikers WHERE gebruikerscode = :user and wachtwoord = :pass"); 
$ophalen->execute(array(
    ':user' => $username, 
    ':pass' => $password, 
)); 
$opslaan = $ophalen->fetch(PDO::FETCH_ASSOC); 
print_r($opslaan); 
$id = $opslaan["id"]; 

$carnaval = $pdo->prepare("INSERT INTO carnavalvakantie (user_id) VALUES (:id)"); 
$carnaval->execute(array(
    ':id' => "test" 
)); 
} 
+2

ハッシュする前に*** [パスワードをエスケープしない](http://stackoverflow.com/q/36628418/1011527)***を確認するか、他のクレンジングメカニズムを使用してください。パスワードを変更すると、パスワードが変更され、不要な追加のコーディングが発生します。 –

+5

[Little Bobby](http://bobby-tables.com/)によると*** [あなたのスクリプトはSQLインジェクション攻撃の危険にさらされています。](http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-injection-in-php)*** [MySQLi](http://php.net/manual)の[prepared](http://en.wikipedia.org/wiki/Prepared_statement)ステートメントについて学びます。 /en/mysqli.quickstart.prepared-statements.php)。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません!それは信じられないのですか?(http://stackoverflow.com/q/38297105/1011527) –

+0

この '$ haalop_query ="のために、gebruikerscode = '$ username'とwachtwoord = '$ password ''; ' –

答えて

-1
  1. あなたが他のクエリで行っている、あなたが言うように、彼らが働いてきたようアポストロフィ 'の間にあなたの$carnaクエリで$idを入れてみてください。少なくともクエリの形式は除外でき、一貫性を保つことが重要です。クエリは、新しいエントリを挿入されていた後、第2のクエリを挿入したエントリのID番号を見つけるために探している、あなたは$lastid = mysqli->insert_id;(オブジェクト指向スタイル)のようなものを使用することができますか$lastid = mysqli_insert_id($link);(procedurealスタイル)のように見えます

  2. 。これに関する詳細はhereです。

  3. エラー印刷の場合は、これを試してください。これは、hereです。行って、そこにupvoteを与えてください。

(オブジェクト指向スタイル)

try { 
    $query = $this->msqli->query($sql); 
    if ($query === FALSE) 
     throw new Exception($this->mysqli->error); 

    $result = $query->fetch_assoc(); 
} catch(Exception $e) { 
    //... 
} 

OR

あなたがすでに何をしてきたに合わせて手続きのスタイルを使用することができます。それはhereから来ました。

if (!mysqli_query($dbconfig, $carna)) { 
    printf("Errormessage: %s\n", mysqli_error($dbconfig)); 
} 
コメント欄で述べたように
  • 、mysqliの調製(消毒)文を見ています。後ではなく、今すぐもっとよく学んでください。
  • 関連する問題