2014-10-28 55 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

相关问题