0

同じ小さな問題に 10 時間以上取り組んでいるので、stackoverflow に質問する時が来ました! データベースに接続していますが、mysqli_stmt_bind_param を呼び出すと、「無効なオブジェクトまたはリソース」が表示されます。

コンソールで挿入ステートメントを試しましたが、正常に動作します..

<?php
    $con=mysqli_connect("127.0.0.1:3306", "myUsername", "password");
    mysqli_select_db($con, "webshop");

    if (mysqli_connect_errno($con))
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $query= mysqli_stmt_init($con);

    mysqli_stmt_prepare($query, "INSERT INTO user (name, email, hash, address, tel) VALUES (?, ?, ?, ?, ?)");
    mysqli_stmt_bind_param($query, "ssssi", $name, $email, $hash, $address, $tel);
    if(mysqli_stmt_execute($query))
    {
        mysqli_close($con);
    }

?>

助けてくれてありがとう!

4

2 に答える 2

0

mysqli_stmt_init手続き型スタイルを使用して mysqli にアクセスしているため、必要です。

これは type のオブジェクトを返し、mysqli_stmt作成中のクエリのコンテナとして機能します。そのため、これを最初のパラメーターとしてmysqli_stmt_preparemysqli_stmt_bind_paramおよびに渡す必要がありmysqli_stmt_executeます。

したがって、コードは次のようになります。

<?php
    $con=mysqli_connect("127.0.0.1:3306", "myUsername", "password");
    mysqli_select_db($con, "webshop");

    if (mysqli_connect_errno($con))
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $stmt = mysqli_stmt_init($con);
    $query =  "INSERT INTO user (name, email, hash, address, tel) VALUES (?, ?, ?, ?, ?)";

    mysqli_stmt_prepare($stmt, $query);
    mysqli_stmt_bind_param($stmt, "ssssi", $name, $email, $hash, $address, $tel);
    if(mysqli_stmt_execute($stmt))
    {
        mysqli_close($stmt);
    }

?>

無関係な点の 1 つは、telフィールド (電話番号であると思われます) が整数であることを要求しているようです。任意の時点で 0 で始まる電話番号 (たとえば、英国では一般的) を処理する必要がある場合、これは悪い考えかもしれません。

于 2013-10-09T08:16:39.293 に答える