[英]Errors in prepared statement - Undefined variable: sql and Fatal error: Call to a member function bind_param()
[英]PHP SQL Prepared Statement: Fatal Error Call To Member Function
我一直在嘗試使准備好的語句起作用-但是,我一直遇到以下錯誤
<b>Fatal error</b>: Call to a member function bindParam() on a non-object on line <b>41</b><br />
我已經復制了很多教程,甚至提供的代碼也無法正常工作,並拋出了同樣的錯誤。
我的代碼如下:
$mysqli = new mysqli(connect, username,pass, datatbase);
$name = 'Tester';
if (mysqli_connect_errno()) {
echo "Can't connect to MySQL Server. Errorcode: %s\n", mysqli_connect_error();
}
$stmt = $mysqli->prepare("INSERT INTO Parks VALUES (null,?,?,?,?,?,?,?,?,?,?,?,?,?,Now(),?,?,?, 0, 0, 0)");
if ($stmt === FALSE) {
die ("Mysql Error: " . $mysqli->error);
}
$stmt->bind_param('ssssssssssssssss', $name, $theme, $size, $mountains, $hills, $river, $lake, $island, $setofislands, $ocean, $waterfalls, $file, $image, $description, $author,$cs);
$stmt->execute();
$stmt->close();
$mysqli->close();
造成錯誤的原因是BindParam Line。
提前致謝 :)
編輯:錯誤已解決,但是,沒有數據插入數據庫中。 編輯:更新的查詢,數據庫包含VARCHAR,但Description為LONGTEXT。 最后的3是整數/雙精度數,並且有一個當前日期字段。
bindParam
是PDO函數。 您正在使用mysqli,因此請嘗試bind_param
。 您具有“名稱”的地方也應該是類型定義,因此字符串需要“ s”。
例如:
$stmt->bind_param('s', $name);
編輯:雖然這樣說,但錯誤並不表示功能不正確。 它說該對象不存在...運行此操作將為您提供有關准備失敗原因的信息。
$stmt = $mysqli->prepare("INSERT INTO 'Parks' VALUES(null, ?");
if ($stmt === FALSE) {
die ("Mysql Error: " . $mysqli->error);
}
由於SQL不正確,最有可能的准備工作失敗了(我猜是表名“ Parks”不應該在qutoes中)
編輯2:我的猜測仍然不起作用:
$stmt->bindParam('name', $name);
您擁有“名稱”的位置實際上應該是變量類型,例如整數,雙精度,字符串等。這樣數據庫就知道您的變量是什么。
嘗試將該行替換為:
$stmt->bindParam('s', $name);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.