2013-05-26 34 views
0

從選擇查詢抓取結果我從MySQL數據庫選擇的PHP函數:在PHP函數

function Master_file($name, $latin){ 

    $HOST_DB ="localhost"; 

    $NAME_DB="nom"; 
    $USER_DB ="utilisaeur"; 
    $PWD_DB="K3Pud1"; 
    $connect = mysql_connect($HOST_DB,$USER_DB,$PWD_DB); 
    $db=mysql_select_db($NAME_DB); 


    $qry = "SELECT tax_id FROM master where name =".$name." and latin =".$latin; 
    echo $qry; 
    $result = mysql_query($qry); 

    while ($Res_user = mysql_fetch_assoc($result)) { 

    return $Res_user['tax_id']; 
    } 
} 

顯示Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/admin/public_html/hitlist/include/fg_membersite.php on line 446一個錯誤,該行是while ($Res_user = mysql_fetch_assoc($result)

那麼是什麼問題?我該如何解決它?

+2

呦你的查詢失敗。我假設你在變量周圍缺少引號。 –

+1

數據庫連接是否有效?它可能是你沒有真正連接到數據庫,因爲你沒有任何錯誤捕捉,你可能不知道它 –

+0

@FabrícioMatté我改變查詢到'$ qry =「選擇'tax_id'從主'where'名稱'=「。$ name。」和'latin' =「。$ latin;'但是結果相同 –

回答

1

試試這個

function Master_file($name, $latin){ 

    $dsn = 'mysql:host=localhost;dbname=nom'; 
    $username = 'utilisaeur'; 
    $password = 'K3Pud1'; 

    try { 
     $db = new PDO($dsn, $username, $password); 
     $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } catch (PDOException $e) { 
     echo $e->getMessage(); 
     exit; 
    } 


    $result = $db->prepare("SELECT tax_id FROM master where name =:name"); 
    $result->bindValue(':name', $name); 
    $result->execute(); 

    foreach($result->fetchAll(PDO::FETCH_ASSOC) as $row){ 
     echo $Res_user['tax_id'] . '<br />'; 
    } 
} 

編輯 上面剛剛更新使用PDO,顯示任何錯誤,並輸出tax_id值到瀏覽器

+0

不錯,它的作品,但同樣的錯誤只重複30次,但在你的答案之前,它是400行包含'警告:mysql_fetch_assoc():提供的參數不是一個有效的MySQL結果資源。我在while條件下添加了一條消息,並顯示了一次。所以我怎麼能完全避免這個錯誤? –

+0

@lamloumi我已經更新了這個功能。我做了一些改變,包括使用PDO而不是mysql函數。 PDO使用起來更好,請查看:http://php.net/pdo,我也做了一些其他更改,所以如果你想給它一個去看看它是否工作。 –

0

你可以試試這個,因爲功能你回到這裏return $Res_user['tax_id'];所以我認爲你需要一個單一的行代替

function Master_file($name, $latin){ 

    $HOST_DB ="localhost"; 
    $NAME_DB="nom"; 
    $USER_DB ="utilisaeur"; 
    $PWD_DB="K3Pud1"; 

    $connect = mysql_connect($HOST_DB,$USER_DB,$PWD_DB); 
    if (!$connect) { 
     die("Could not connect: " . mysql_error()); 
    } 

    $db=mysql_select_db($NAME_DB, $connect); 
    if (!$db) { 
     die ("Can't use " . $NAME_DB . " : " . mysql_error()); 
    } 

    $qry = "SELECT tax_id FROM master where name ='" . $name . "' and latin = '" . $latin . "'"; 
    $result = mysql_query($qry); 
    if($result){ 
     $row = mysql_fetch_assoc($result); 
     return $row['tax_id']; 
    } 
}