2017-01-13 46 views
-2

我試圖插入到數據庫中,但我總是得到迴音的正確方法:這是準備和執行bind_param

「票Niet的aangemaakt」

我可以用「?」中間變量?

如果是的話,有人可以看到一些錯誤,否則我知道有一個拼寫錯誤 的變量。

<?php 
//this works fine 
$ophaalKlantQuery = "SELECT * FROM klant WHERE klantNaam='$naam'"; 
    $result = $connectie->query($ophaalKlantQuery); 
    if (mysqli_num_rows($result) == 0) { 
     echo "klant niet gevonden"; 
    } 
    while ($row = $result->fetch_assoc()) { 
     if ($row['klantNaam'] === $naam) { 
      echo $row['klantNaam']; 
      $klantID = $row['klantId']; 
     } 
    } 
// everything below doesnt insert 
$insertticket = $connectie->prepare("INSERT INTO ticket (ticketId, inBehandeling, probleem, trefwoorden, prioriteit, aantalXterug, 
         terugstuurLock, lijnNr, datumAanmaak, nogBellen, log, streefdatum, redenTeLaat, klantTevreden, ftsAccountNr, aangewAccountNr, klantId, subCategorieId, 
         binnenkomstId, vVLaptopTypeId, besturingssysteemId) 
         VALUES ('','$inbehandeling',?,?,?, '$aantalXterug','$terugstuurLock','$lijnNr','$datumAanmaak','$check','$log',?,'$redentelaat','$klanttevreden','$fstAccountNr', 
         '$aangewAccountNr','$klantID',?,?,?,?)"); 
      if ($insertticket) { 
       $insertticket->bind_param('ssisiiii', $probleem, $trefwoorden, $prioriteit, $streefdatum, $scategorie, $binnenkomstT, $merktype, $besturingsysteem); 
       if ($insertticket->execute()) { 
        echo 'ticket aangemaakt'; 
        //header("Refresh:5; url=../index.php", true, 303); 
       } 
      }else {echo 'ticket niet aangemaakt';} 
?> 
+0

對不起,請澄清一下,你爲什麼把取代價值? 是否將它們留空?或者你想把變量放到那個值上? –

+0

我綁定?值bind_param –

+0

你需要告訴我們真正的錯誤是什麼。而不是'else {echo'ticket niet aangemaakt';}'你應該使用'echo'錯誤:「。 mysqli_error($ connectie);'告訴我們它是什麼,並使用php的錯誤報告。 –

回答

-1

有不同的語法,但現在做SQL請求的好方法是將SQL從傳遞變量中分離出來。你絕不應該直接在SQL請求字符串中連接一個值。

有關於這方面的文檔,但全球範圍內的事情是用由bind方法自動安全替換的東西替換字符串中的值。

語法的例子: 「?」

'INSERT INTO test (name, age) VALUES (?, ?)' 

'INSERT INTO test (name, age) VALUES (:name, :age)' 
+0

爲什麼指定的佔位符?這些是PDO,而不是mysqli_,這是他們正在使用的。 –

+0

INSERT中沒有'WHERE'子句。 – Barmar

+0

那也太^但它仍然沒有解釋命名的佔位符 –