2014-07-24 3 views
-1

이 코드에 문제가 있습니다. 나는이 HTML 양식데이터베이스에 삽입하지 못했습니다.

<form method="post" action="invio_db1.php"> 
    Nome <input type="text" name="nome"> <br><br> 
    Cognome <input name="cognome" type="text"> <br><br> 

    <input value="Invia" type="submit"> 
    <input value="Reset" type="reset"> 
</form> 

이 PHP 코드

<?php 
    $host = "127.0.0.1"; 
    $nick = "root"; 
    $pw = ""; 
    $db_name = "associazydbe"; 

    $db = mysqli_connect($host, $nick, $pw) or die ("Errore nella connessione"); 
    mysqli_select_db($db, $db_name) or die (mysqli_error()); 

    if(!empty($_POST["nome"])) 
     $nome = $_POST["nome"]; 
    else 
     $nome = null; 

    if(!empty($_POST['cognome'])) 
     $cognome = $_POST['cognome']; 
    else 
     $cognome = null; 

    $query = "INSERT INTO persons_comeunprodigio (nome, cognome) 
        VALUES ('$nome', '$cognome')"; 

    mysqli_query($db, $query) or die(mysqli_error()); 
?> 

나는 그것이 오류되지 않은 생각하지만, 실행 한 후, 데이터베이스에있는 모든 필드가 null 인을했습니다! 문제점을 찾아서 해결할 수 없습니다.

미리 감사드립니다.

+2

'echo $ query;를 삽입하기 직전에 할 수있어서, 쿼리가 제대로 형성되었는지 알 수 있습니까? – robobobobo

+0

또한 데이터베이스에 지정한 것과 똑같은 열이 있는지 확인하고 해당 데이터 형식을 허용하는지 확인하십시오. – robobobobo

+0

여는'

답변

0

아마도 PHP 스크립트에 조건을 추가하고 양식을 보낼 때만 데이터베이스에 데이터를 삽입해야합니다. 대신

:

if(!empty($_POST["nome"])) 
     $nome = $_POST["nome"]; 
    else 
     $nome = null; 

    if(!empty($_POST['cognome'])) 
     $cognome = $_POST['cognome']; 
    else 
     $cognome = null; 

    $query = "INSERT INTO persons_comeunprodigio (nome, cognome) 
        VALUES ('$nome', '$cognome')"; 

    mysqli_query($db, $query) or die(mysqli_error()); 

당신이 있어야합니다

if (isset($_POST['nome'])) { 

    if(!empty($_POST["nome"])) 
     $nome = $_POST["nome"]; 
    else 
     $nome = null; 

    if(!empty($_POST['cognome'])) 
     $cognome = $_POST['cognome']; 
    else 
     $cognome = null; 

    $query = "INSERT INTO persons_comeunprodigio (nome, cognome) 
        VALUES ('$nome', '$cognome')"; 

    mysqli_query($db, $query) or die(mysqli_error()); 
} 

이제 데이터베이스에 데이터를 삽입하는 형태를 눌러 전송 버튼을 작성해야합니다.

그러나 적어도 mysqli_real_escape_string을 사용해야하지만 더 나은 선택은 prepared statements입니다. 현재 귀하의 코드는 SQL Injection에 취약합니다.