2013-08-26 36 views
0

我對PHP很陌生。如何檢查數據庫表中的現有行

有人可以驗證此代碼並告訴我是什麼問題。

<?php 
    require_once 'excel_reader2.php'; 
    $data = new Spreadsheet_Excel_Reader("NZ_Price_List.xls"); 
    error_reporting(E_ALL^E_NOTICE); 
    //start mysql connection 
    $con=mysqli_connect("localhost","root","ebooks3","newlocalabc"); 
    // Check connection 
    if (mysqli_connect_errno()) 
     { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
     } 
    for($i=1;$i < $data->rowcount();$i++) 
    { 
    $p = $data->val($i,'A'); 
    $sql = sprintf("select count(*) as cnt from products where `isbn` = '%s'", mysql_real_escape_string($p)); 
    $row_dup = mysql_fetch_assoc(mysql_query($sql,$con)); 
    if ($row_dup['cnt'] == 0) { 

      //insert 
     } 
else{ 
//update 
} 
    } 

    echo "hello done"; 
    mysqli_close($con); 

    ?> 

我想將Excel電子表格中的值與數據庫進行比較。如果該值已經存在,那麼只需更新,或者如果該值不存在,那麼我必須對該行進行檢查。

我收到以下錯誤消息:

mysql_fetch_assoc()預計參數1是資源,鑑於空

有的請讓我儘快。

+5

你在混合mysql和mysqli數據庫調用,你需要修復這個問題。他們應該都基於您的連接mysqli – bumperbox

+0

可能重複[插入到表或更新如果存在(MySQL)](http://stackoverflow.com/questions/4205181/insert-to-table-or-update-if- exists-mysql) –

回答

0

您使用的是mysqli連接,所以你需要使用mysqli_功能,不mysql_。所以你的代碼應該是 -

$sql = sprintf("select count(*) as cnt from products where `isbn` = '%s'", mysqli_real_escape_string($con,$p)); 
$row_dup = mysqli_fetch_assoc(mysqli_query($con,$sql)); 
-1
$num = mysql_num_rows(mysql_query($sql,$con)); 
+5

你應該解釋爲什麼這回答了這個問題。 –

+0

謝謝,但它仍然是一樣的。 – user2636163

+0

您是否修復了mysql/mysqli調用? –

相關問題