0

xamppで作成された単純なデータをデータベースに送信しようとしています(ポートは81に変更され、パスワードはありません...)。データ フォームにデータを挿入して送信すると、コンソール ログに適切な値が送信されますが、ローカルホストと php のフラグメントでデータベースが更新されません。

<?php
$conn = new mysqli('localhost:81', 'root', '', 'my_db');
$query = "INSERT into komentarze('name', 'email', 'comments') VALUES ($name, $email,     $comments)";

$stmt = $conn->stmt_init();

if($stmt->prepare($query)) {
    $stmt->bind_param('sss', $_POST['name'], $_POST['email'], $_POST['comments']);
    $stmt->execute();
}
?>

表示されている php コードのフラグメントは、id="response" を使用して新しく作成された p 要素に配置されます。

<script type="text/javascript">
    $(document).ready(function() {
        $('#submit').click(function() {

            var name = $('#name').val();
            var email = $('#email').val();
            var comments = $('#comments').val();

            $.ajax({
                url: 'submit_to_db.php',
                type: 'POST',
                data: {'name=': name,
                        'email=': email,
                        'comments=': comments },
                //data: 'name=' + name + '&email=' + email + '&comments=' + comments,
                success: function(result){
                    $('#response').remove();
                    $('#container').append('<p id="response">' + result + '</p>');
                }
            });
            return false;
        });
    });
</script>

$stmt->affected_rows または not で何も起こらなかった場合、db と echo msg に静的な値を追加しました;/

4

3 に答える 3

0

このステートメントには 2 つの問題があります。

$query = "INSERT into komentarze('name', 'email', 'comments') VALUES ($name, $email,     $comments)";
  1. 列名は、アポストロフィの代わりに ` などのバッククォートで囲む必要があります。

  2. 値は、変数ではなくプレースホルダーにする必要があります?, ?, ?

これにより、両方の問題が修正されます。

$query = 'INSERT INTO komentarze(`name`, `email`, `comments`) VALUES (?, ?, ?)';
于 2013-06-11T01:34:16.320 に答える
0

mysqli を使用する場合は、、などを に置き換える必要が$nameあり$emailます?。関連するコードは次のようになります。

$query = "INSERT into komentarze('name', 'email', 'comments') VALUES (?, ?, ?)";
...
$stmt->bind_param('sss', $_POST['name'], $_POST['email'], $_POST['comments']);
于 2013-06-10T23:04:32.620 に答える
-1

私は2つの問題を見ることができます。どちらもクエリ パラメータのバインディングに関連しています。

変数をバインドする場合、つまり、ステートメント'$_POST内のプレースホルダーを実際の値に置き換える必要があります。SQLしたがって、クエリは次のようになります。

$query = "INSERT into komentarze('name', 'email', 'comments') VALUES (?,?,?)";

次に、変数ごとに後続の呼び出しを呼び出して、値がクエリにバインドされていることを確認する必要があります。bind_param

于 2013-06-10T23:05:35.067 に答える