簡體   English   中英

PHP MySQL在准備好的語句中圍繞匿名變量拋出錯誤

[英]PHP MySQL throwing error around anonymous variables in prepared statement

運行准備好的語句時,出現以下錯誤:

錯誤:插入文章( urlheadlinepubDatesourceimage_loc )VALUES(?,?,?,?,?)。 檢查與您的MySQL服務器版本相對應的手冊,以在第6行的'?,?,?,?,?,?)'附近使用正確的語法

這是似乎引發錯誤的代碼:

            $sql = "INSERT INTO $tableName (`url`, 
                            `headline`, 
                            `pubDate`, 
                            `source`, 
                            `image_loc`) 
                VALUES(?, ?, ?, ?, ?)";

        // MySQLi connection, binds variables to prevent injection, executes
        $stmt = $connection->prepare($sql);
        $stmt->bind_param('sssss', $url, $headline, $pubDate, $source, $image_loc);
        $stmt->execute();

編輯:這是我在單獨文件中設置為連接的內容。 它在某種意義上說是一切都被保存了……我只是在拋出一個錯誤。

$servername = "localhost";
$username = "xxxxxx";
$password = "xxxxxx";
$dbname = "news";
$tableName = "articles";

$connection = mysqli_connect($servername, $username, $password, $dbname);

if (!$connection) {
  die("Connection failed: " . mysqli_connect_error());
}

再次編輯:這是用於檢查插入是否成功的代碼,盡管我猜測這可能是問題的根源(但我沒有足夠的經驗來理解原因):

if (mysqli_query($connection, $sql)) {
            echo "New record created successfully";
        } else {
            echo "Error: " . $sql . "<br>" . mysqli_error($connection) . "<br>";
        }

您的代碼:

if (mysqli_query($connection, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($connection) . "<br>";
}

...使用mysqli_query() 這實際上是執行查詢的另一種方式,只是與execute()不同,它不使用綁定參數。 它只是將查詢發送到數據庫,問號以及所有內容,從而造成您的錯誤。

如果要檢查錯誤,則應在運行時檢查execute()語句的結果,而不要執行進一步的查詢。 將您的$stmt->execute()行替換$stmt->execute()以下內容,以執行查詢並測試是否成功:

if ($stmt->execute()) {
    // Success
} else {
    // Failure
}

代替

if (mysqli_query($connection, $sql)) {
        echo "New record created successfully";
} else {
        echo "Error: " . $sql . "<br>" . mysqli_error($connection) . "<br>";
}

您應該使用mysqli::$affected_rows屬性,如下所示;

if ($connection->affected_rows > 0) {
        echo "New record created successfully";
} else {
        echo "Error: " . $sql . "<br>" . $connection->error() . "<br>";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM