我试着查看单行数据:
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'中的数据是字母数字
如何解决这个问题? :(
答案 0 :(得分:4)
如果该字段确实是字母数字,那么您应该包含引号:
id_member = '".$_GET['id_member'] . "'";
Please, don't use
mysql_*
functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。
以下是使用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']."'";