2014-10-28 59 views
-3

我很新的php mysql編程。我有我的檢索用戶配置文件信息寫程序,但我看了mysql_fetch_assoc提供的參數

mysql_fetch_assoc():提供的參數不就行了9有效和21

這裏是我的代碼。但另一方面它正在另一個數據庫上工作。我編輯了單引號,但它仍然給出相同的錯誤信息。你可以給我一個解決方案,或者如果你喜歡這個自己製作的程序,比較和識別我​​的缺陷會更有幫助。

<?php 
include ("config.php") 
?> 

<?php 
function getUsersData($id) 
{ 
    $array=array(); 
    $result = mysql_query("SELECT * FROM 'users' WHERE 'id' = '" . $id); 
    while($row = mysql_fetch_assoc($result)) 
    { 
     $array['id']=$row ['id']; 
     $array['name']=$row ['name']; 
     $array['username']=$row ['username']; 
     $array['email']=$row ['email']; 
    } 
    return $array; 
} 
function getId($username) 
{ 
    $result = mysql_query("SELECT 'id' FROM 'users' WHERE 'username' = '" . $username . "'"); 
    while($row = mysql_fetch_assoc($result)) 
    { 
     return $row['id']; 
    } 
} 
?> 
+1

您沒有正確引用'$ id'的值,並錯誤地引用了列名。添加mysql_error(),然後讀取PDO /參數綁定。 – mario 2014-10-28 08:38:20

+0

首先,停止使用'mysql'函數,因爲它已被棄用(這意味着未來某處它將被踢出php,而你的代碼將不再工作)。改爲使用'mysqli'。 – Michel 2014-10-28 08:39:59

+0

MySql查詢不在這裏。所以$結果沒有得到資源ID。作爲一名新開發人員,我建議您在執行之前打印您的查詢。 該行 $ result = mysql_query(「SELECT * FROM'users'WHERE'id'='」。$ id); 應該是 $ result = mysql_query(「SELECT * FROM'users' WHERE'id' ='」。$ id。「'」); – 2014-10-28 08:43:28

回答

2

很可能是因爲查詢失敗。標識符(表/列)的報價是反引號不是單引號:

`users`
$result = mysql_query("SELECT * FROM 'users' WHERE 'id' = '" . $id); // fix the quoting here 
            ^ ^ ^^ 

要麼將​​它們包含或忽略它們。

$id = "'" . mysql_real_escape_string($id) . "'"; 
$result = mysql_query("SELECT * FROM `users` WHERE `id` = $id"); 

強制性注:

Please, don't use mysql_* functions in new code。他們不再維護and are officially deprecated。請參閱red box?請改爲了解prepared statements,並使用PDOMySQLi - this article將幫助您決定哪個。如果您選擇PDO,here is a good tutorial

相關問題