2016-08-26 4 views
0

MySQLiとPHPに問題があります。送信したばかりのフォームから名前、価格、IDをどのようにエコーしますか?

私はフォームを作成し、希望の値を入力してsubmitを押すと、すぐに値がデータベースに送られます。これには何も問題ありません。

私がしたいことは、送信ボタンを押すと、PHPはちょうど提出されたエントリの結果をエコーし​​ます。それは言うことです:

`INSERT INTO table VALUES (x, x, y) -> SELECT x, x, y FROM table ORDER BY id DESC LIMIT 1` 

私はこれを行うには多くの方法を試してみましたが、それらのすべてが、前のエントリ(ちょうど提出1の前に1)のエコーかはっきり動作しないのいずれか。

私はmysqli_insert_id($ conn)を試しましたが、これは何も返しません。

私のコードは、現時点でのかかっているところである:

$conn = mysqli_connect($server, $user, $pw, $BD); 
    if (!$conn) { 
     die ('<span style="color: #FF0000;">"connection failed: "</span>' . mysqli_connect_error()); 
    } 

    $nome = $_POST['nome']; 
    $preco = $_POST['preco']; 

    $query = "INSERT INTO produtos(nome, preco) VALUES ('$nome', '$preco')"; 
    $result = mysqli_insert_id($conn); 
    var_dump ($result); 

    if (mysqli_query($conn, $query)){ 
     echo '<br>'."Succeeded!"; 
    } else { 
     echo '<br>'."ERROR!" .'<br>'. $query ."<br>". mysqli_error($conn) .'<br><br>'. '<span style="color: #FF0000;">You have to fill all the fields.</span>'; 
    } 

    mysqli_close($conn); 

任意のヘルプの、のvar_dumpの出力は、現時点では(0)をint型ならば、注意することは。 ありがとうございます。私はこれで怒っているように苦労してきました。

+0

クエリを実行せずにmysqli_insert_idを取得することはできません。 – Saty

+0

@Saty ok、修正しました! mysqli_insert_idが機能しました。しかし、それはまだ最後のものの前のエントリからIDを戻しています。 –

答えて

0

あなたもあなたのクエリを実行していないことを確認してください。サイドノートでは、あなたは、SQLインジェクションを認識し、以下のパターンに従ってください:

$nome = mysqli_real_escape_string($conn, $_POST['nome']); 
$preco = mysqli_real_escape_string($conn, $_POST['preco']); 

$sql = "INSERT INTO produtos (nome, preco) VALUES ('".$nome."', '".$preco."')"; 
$query = mysqli_query($conn, $sql) or die(mysqli_error($conn)); 
$result = mysqli_insert_id($conn); 

echo $result; // Check your result. 
+0

これは機能します。ただし、値はデータベースに重複してアップロードされており、最も高いIDの前の値が返されます。これをどうやって解決するのですか? –

+1

@PauloSoares Stack Overflowはサポートフォーラムではないことに注意してください。あなた自身の問題を解決しようとする。あなたが立ち往生した場合、誰かがあなたのために解決しなければならないあなたの問題を明らかにするだけでなく、*質問*をしてください。 –

+0

@ YourCommonSenseはそれを手に入れました。 –

-1

使用この:

$query = "INSERT INTO produtos(nome, preco) VALUES ('$nome', '$preco')"; 
$res=mysqli_query($conn,$query); 
$result = mysqli_insert_id($conn); 
var_dump ($result);` 
+0

これには元の投稿からのSQLインジェクションの脆弱性が含まれています。これは安全ではありません! – halfer

2

あなたはmysqli_insert_idexecutingなしでクエリを取得することはできません。 prepare statementを使用してSQLインジェクションを防止する

$stmt = $conn->prepare("INSERT INTO produtos(nome, preco) VALUES (?,?)"); 
    $stmt->bind_param('ss', $nome, $preco); 
    $stmt->execute();// execute query 
    $conn->insert_id;// get last insert id 
関連する問題