2017-01-13 1 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 '티켓 애플릿};''echo "Error :"를 사용해야합니다. 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

그 역시 ^하지만 여전히 이름 붙여진 자리 표시자를 설명하지 못합니다 –