2017-08-19 31 views
-2

私は、SQLテーブル内のデータを挿入しようとしているが、それは値を複製しています:SQL挿入複製値

$star1 = trim($_GET['star1']); 
    $star2 = trim($_GET['star2']); 
    $star3 = trim($_GET['star3']); 
    $star4 = trim($_GET['star4']); 
    $star5 = trim($_GET['star5']); 

$conn = new mysqli($host, $user, $pass, $db); 
    if ($conn->connect_error) { 
     die("Desculpe.. Falha ao salvar "); 
    } 

    $sql = "INSERT INTO classificacoes (nossa_empresa, produtos_oferecidos,atendimento, colaboradores, indicaria) VALUES ('$star1','$star2','$star3','$star4', '$star5')"; 
    $conn->query($sql); 
    if ($conn->query($sql) != TRUE){ 
     echo "Erro ao gravar"; 
    } 
    else{ 
     echo "Gravou"; 
    } 

    mysqli_close($conn); 

すなわち:コードの挿入テーブル内の2つの値identincal。

どういうところが間違っていますか?

+2

、あなたが二回照会しているので。 –

+0

個人的には、私はこの質問が答えを正当化しないと感じます、それはtypo IMHOです。 –

+1

あなたは[SQL Injections](http://php.net/manual/en/security.database.sql-injection.php)を広く利用していますので、[Prepared Statements](http://php.net/ manual/en/mysqli.quickstart.prepared-statements.php)を使用してください。あなたがユーザーの入力をまったくエスケープしていないからです! –

答えて

1

問題は、あなたが二回のクエリを実行している次のとおりです。

ifラインもクエリを実行しているので、あなたはif上記の行を削除する必要があります。あなたのコードは次のようにする必要があります:

$sql = "INSERT INTO classificacoes (nossa_empresa, produtos_oferecidos,atendimento, colaboradores, indicaria) VALUES ('$star1','$star2','$star3','$star4', '$star5')"; 
if ($conn->query($sql) != TRUE){ 
    echo "Erro ao gravar"; 
} 

それとも別のオプションは、次のように、変数にクエリの結果を得ることです:

$sql = "INSERT INTO classificacoes (nossa_empresa, produtos_oferecidos,atendimento, colaboradores, indicaria) VALUES ('$star1','$star2','$star3','$star4', '$star5')"; 
$insertOK = $conn->query($sql) 
if ($insertOK != TRUE){ // This is equal to if(!$insertOK){ 
    echo "Erro ao gravar"; 
}