-1

PHP 経由で MySQL にアクセスしようとしていますが、これらのエラー メッセージが表示されます。

Notice: 未定義の変数: stmt in /var/www/contact.php 行 60

致命的なエラー: 63 行目の /var/www/contact.php の非オブジェクトに対するメンバー関数 bind_param() の呼び出し

私のコード:

<?php

$servername = "localhost";
$username = "test";
$password = "test";
$dbname = "test";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// LINE 60
if(!$stmt = $conn->prepare("INSERT INTO MyGuests VALUES(?, ?, ?)") || !is_object($stmt)){
    die( "Error preparing: (" .$conn->errno . ") " . $conn->error);
}
//LINE 63
$stmt->bind_param("sss", $firstname, $lastname, $email) ;
4

3 に答える 3

0

オブジェクトは $conn であるため、if ステートメントに含めることができますが、必須ではありません。MyGuests テーブルが id 列および lastname、fisrtname、email 列であると想定しています。SQL「INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)」で実際の列を指定する必要があります。

変数 $stmt はまだ定義されていません。したがって、!$stmt とは言えません。関数は機能しません。次のようにします。

$stmt = "";
if(!($stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)"))){
    die( "Error preparing: (" .$conn->errno . ") " . $conn->error);
}

$firstname = "John";
$lastname = "Doe";
$email = "john@example.com";

if(!($stmt->bind_param("sss", $firstname, $lastname, $email))){
    die( "Error in bind_param: (" .$conn->errno . ") " . $conn->error);
}


$stmt->execute();
于 2014-10-25T21:33:32.207 に答える