簡體   English   中英

PHP SQL准備的語句:致命錯誤調用成員函數

[英]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.

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