PHP - mysql_fetch_assoc()错误

时间:2014-11-29 07:23:46

标签: php mysql

我试着查看单行数据:

include("../engine/setconnect.php");

$sql = "SELECT id_member,username FROM account WHERE id_member=".$_GET['id_member'];

$result = mysql_query($sql);
$data  = mysql_fetch_assoc($result);

echo "$data['id_member']";
echo "$data['name']";

但结果总是:

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in

'id_member'中的数据是字母数字

如何解决这个问题? :(

2 个答案:

答案 0 :(得分:4)

如果该字段确实是字母数字,那么您应该包含引号:

id_member = '".$_GET['id_member'] . "'";
  

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

     

参考:https://stackoverflow.com/a/12860140/3859027

以下是使用PDO准备语句的简单示例:

if(isset($_GET['id_member'])) {

    $db = new PDO('mysql:host=localhost;dbname=DATABASE_NAME', 'username', 'password');

    $sql = "SELECT id_member,username FROM account WHERE id_member = :id_member";

    $select = $db->prepare($sql);
    $select->bindParam(':id_member', $_GET['id_member']);
    $select->execute();

    $result = $select->fetch(PDO::FETCH_ASSOC);
    echo $result['username'];
}

答案 1 :(得分:1)

不推荐使用Mysql,我强烈建议您使用预准备语句,但是这个问题是关于mysql的,我会回答这个问题。

列id_member的数据类型不是数字。所以你必须用引号括起来。

$sql = "SELECT id_member,username FROM account WHERE id_member='".$_GET['id_member']."'";