我試圖創建一個函數來檢查在使用mysqli(全新的我)的mysql中的重複條目,但我不能讓我的頭繞着這個錯誤。我有3個PHP文件:db.php - db連接functions.php與我的功能(需要db.php)和submit.php - 接受輸入的文件。致命的錯誤調用成員函數prepare()在非對象
db.php中:
<?php
define("HOST", "localhost"); // The host you want to connect to.
define("USER", "user"); // The database username.
define("PASSWORD", "pass"); // The database password.
define("DATABASE", "db_list"); // The database name.
$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);
?>
的functions.php:
require 'db.php';
function check($str, $mysqli) {
$checkdupe = $mysqli->prepare("SELECT name FROM list WHERE str = ?"); //line giving me error
$checkdupe->bind_param("s", $str);
$checkdupe->execute();
$checkdupe->store_result();
if ($checkdupe->num_rows > 0) {
//dupe found
return true;
} else {
//no dupe
return false;
}
}
submit.php
require 'functions.php';
if (isset($_POST['name'])) {
if (check($_POST['name'], $mysqli) == true) { //added $mysqli parameter
echo "success!";
} else {
echo "fail;
}
} else {
echo 'invalid post';
}
?>
向我們展示如何調用check()函數。 –
這不是PDO ...這是mysqli,你應該有更好的錯誤處理。如果' - > prepare()'導致錯誤,那麼'$ mysqli'不是一個有效的數據庫連接句柄(週期,或者至少在腳本中的那個點,例如範圍問題),並且可能是'connect'通話失敗。 –
我們可以看到你的'submit.php'文件嗎?這對確定錯誤的位置很有必要。 – Phas1c