[英]PHP MySQL throwing error around anonymous variables in prepared statement
運行准備好的語句時,出現以下錯誤:
錯誤:插入文章(
url
,headline
,pubDate
,source
,image_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.