2012-09-26 51 views
1

這很奇怪。我只向prepare()和bind_result()中添加一個變量,並導致錯誤。下面是工作代碼:MySQLi在非對象上調用成員函數bind_param()錯誤

$id = $_GET['id']; 
$result = $mysqli->prepare("SELECT YiD, Title FROM Videos WHERE iD = ?"); 
$result->bind_param("s",$id); 
$result->bind_result($youtubeid, $youtubetitle); 
$result->execute(); 
$result->store_result(); 
$result->fetch(); 

現在,這裏是沒有工作的代碼:

$id = $_GET['id']; 
$result = $mysqli->prepare("SELECT YiD, Title, Desc FROM Videos WHERE iD = ?"); 
$result->bind_param("s",$id); 
$result->bind_result($youtubeid, $youtubetitle, $youtubedesc); 
$result->execute(); 
$result->store_result(); 
$result->fetch(); 

,它給了我這個錯誤 - 致命錯誤:)調用一個成員函數bind_param(上非對象/home/content/77/9901377/html/video.php在線23

23號線是bind_param( 「S」,$ id)的

我正確調用數據庫,一切工作在第一個代碼中,b當我向代碼添加更多變量時,它不起作用。

+2

可能是因爲'DESC'是一個SQL關鍵字,你需要以某種方式引用它...... – MvanGeest

回答

3

說明是MySQL reserved word。如果要將其用作列或表名稱,則必須將其用反引號括起來(`)

1

問題是$result不是一個對象。

這是一個錯誤代碼或False,因爲你使用Desc(其是保留關鍵字)這裏:

$result = $mysqli->prepare("SELECT YiD, Title, Desc FROM Videos WHERE iD = ?"); 

使得$mysqli->prepare返回錯誤而不是適合於參數結合SQLI對象的。

嘗試引用列名稱。

相關問題