2011-03-22 30 views
1

我正在使用MySQLi準備語句來執行此操作,因爲數據來自其他來源。 這是我的代碼,它不工作的人。我不明白爲什麼我需要做的$ stmt-> store_result()才能運行NUM_ROWS()。因爲如果我不跑store_result,我會得到一個錯誤:我想搜索數據庫,如果表中已經包含數據,如果沒有,則插入它

Fatal error: Call to a member function bind_param() on a non-object

foreach($this->contents as $key => $dealer) { 
     foreach($dealer as $deals) { 
       $stmt = $mysqli->prepare("SELECT id, name FROM company WHERE name = ? LIMIT 1"); 
       $stmt->bind_param("s", $deals['company']); 
       $stmt->execute(); 
       $stmt->store_result(); 

       if($stmt->num_rows() > 0) { 
        $companyid = // I don't know how to get the id from the query 
       } else { 
        $stmt->prepare("INSERT INTO company (name) VALUES (?)"); 
        $stmt->bind_param("s", $deals['company']); 
        $stmt->execute(); 
       } 
       $stmt->close(); 
     } 
} 

基本上我希望代碼檢查公司表中是否存在公司,然後檢查公司表後,如果公司存在,那麼我需要記錄公司的ID,以便我可以在我的其他查詢中使用它,但是如果它不存在,那麼我需要記錄公司名稱,然後得到的ID,所以我可以在我的其他查詢中使用它。

請幫幫我。

+0

這個怎麼樣:[?如何 '插入如果不存在' 在MySQL(http://stackoverflow.com/questions/1361340/how-to-insert-if-not-exists-in -mysql) – 2011-03-22 13:51:36

+0

哇,這是偉大的不知道,它甚至存在 – 2011-03-22 16:23:38

回答

1

要得到您的$companyId您需要做$stmt->bind_result()$stmt->fetch()Docs on fetch()

if($stmt->num_rows() > 0) { 
    // To get your companyId 
    $stmt->bind_result($companyId); 
    $stmt->fetch() 

    // Now $companyId has the value from id in the database 
} else { 
    // Do your insert statement, etc... 
} 
+0

我現在切換到Pdo,我發現Pdo更容易..謝謝人 – 2011-03-22 16:23:58

相關問題