2015-07-02 51 views
1

當我準備我的$query時出現錯誤。 下面是幾行:PHP MySQL調用成員函數execute()對非對象

$query="INSERT INTO bm(title,season) VALUES(:title, :season)"; 
$stmt = $mysqli->prepare($query); 
//$stmt->bind_param("ss", $title, $season); 
$stmt->execute(array(':title' => $title, ':season' => $season)); 

我把符合bind_param// 我看到其他人可以解決,但誤差成爲大致相同:

致命錯誤:調用一個成員函數bind_param ()在非對象上

所以,我想到了我的查詢,但它非常簡單,我再也看不清楚了。這讓我瘋狂。 : - /我還測試了var $title$seasonecho只是$query前行可以肯定,這樣的:

echo $title." et ".$season; 

但沒有什麼是錯的,值確定。這些是字符串變種。任何幫助將非常感激。謝謝。


下面是完整的代碼:

<?php 
include("connexion.php"); 

// Get vars from previous form 

//$id=""; 
$title = isset($_POST['title']) ? $_POST['title'] : ""; 
$season = isset($_POST['season']) ? $_POST['season'] : ""; 

// Testing vars 

if (empty($titre) && empty($saison)) 
    { 
    echo '<font color="red">Must be filled...</font>'; 
    } 

// Vars ok : could be inserted in "bm" table 
else 
    { 
     // Protect - inject SQL 
     $title=$mysqli->real_escape_string(strip_tags($title)); 
     $season=$mysqli->real_escape_string(strip_tags($season)); 

     // Test 
     echo $title." et ".$season; 

     // Insert method 

     $query="INSERT INTO bm(title,season) VALUES(:title, :season)"; 
     $stmt = $mysqli->prepare($query); 
     $stmt->bind_param("ss", $title, $season); 
     $stmt->execute(array(':title' => $title, ':season' => $season)); 

     // Insert ok ? 
    if ($stmt) { 
      echo "Insert ok."; 
     } 
     else { 
      echo "Insert failed !"; 
     } 
    } 

//Close connexion  
$mysqli->close(); 
?> 

回答

0

嘗試改變你的數據庫調用如下:

$query="INSERT INTO bm(title,season) VALUES(?, ?)"; 
$stmt = $mysqli->prepare($query); 
//could be false if prepared statemant is somehow wrong 
if ($stmt === false){ 
    echo "Insert failed !"; 
} 
else{ 
    //bind the params to the variables 
    $stmt->bind_param("ss", $title, $season); 
    //no parameters allowed for execute method according to the doc 
    $success = $stmt->execute(); 
    //check for $success if true/false 
} 
+0

它像一個魅力。 –

+0

它像一個魅力。但太糟糕了,我不能使用':var' /'$ var'提示。如果我需要'table bm'中的所有變量,那麼更容易修改我的查詢。也許與PDO?但是代碼可能會從頭開始重新編寫...從我讀到的有關PDO vs Mysqli的內容中可以看出: - / –

0

爲什麼不使用最常用的queing從數據庫中提取數據?最常用的是通過使用while循環從數據庫中獲取數據的權利?我認爲如果你使用的是sqlsrv,你的方法是完美的,但是mysql和mysqli幾乎有相同的語法,與sqlsrv不同,它使用params傳遞數據,只是我的觀點:D

0

如果你參考PHP MYSQLI(http://php.net/manual/en/mysqli.prepare.php)上的文檔,您會注意到在準備中發生錯誤時會返回FALSE。

mysqli_prepare() returns a statement object or FALSE if an error occurred.

而不是來自mysqli_stmt對象的調用,它來自FALSE布爾值。
我的假設是,如果您傳遞適當的變量,錯誤發生在您的連接字符串中。需要更多的代碼才能進一步排除故障。

+0

我把完整的代碼。我從一個PHP表單文件中獲得了變量。 –

相關問題