我想知道这是否正确?我有一种感觉,它不是,并想知道解决它的最佳方法。
$query= mysql_num_rows(mysql_query("SELECT * FROM members WHERE email='$email'"));
while ($row = mysql_fetch_array($query)) {
$firstname = $row['firstname'];
}
谢谢。
答案 0 :(得分:3)
您将行数分配给$query
,而您应该指定mysql_query()
的返回值,因为mysql_fetch_array()
需要结果标识符作为其参数。
其他问题:
$email
的来源,但可能存在SQL注入漏洞。在PDO或MySQLi中使用预准备语句来防止这种情况发生。mysql_fetch_array()
。重构以显示正确的逻辑(但仍然不应该使用,因为它已被弃用):
$query= mysql_query("SELECT * FROM members WHERE email='" . mysql_real_escape_string($email) . "'");
if($query){ // check the return value
while ($row = mysql_fetch_array($query)) {
$firstname = $row['firstname'];
}
}
使用预准备语句的MySQLi示例:
$db = new mysqli('localhost', 'user', 'pass', 'dbname');
if($stmt = $db->prepare('SELECT * FROM members WHERE email = ?')){
$stmt->bind_param('s', $email);
$stmt->execute();
if($result = $stmt->get_result()){
while ($row = $result->fetch_assoc()){
$firstname = $row['firstname'];
}
}
}
答案 1 :(得分:2)
<强> MySQL的:强>
$query= mysql_query("SELECT * FROM members WHERE email='$email'");
while ($row = mysql_fetch_array($query)) {
$firstname = $row['firstname'];
}
<强>库MySQLi:强>
$mysqli = new mysqli("localhost", "root_user", "root_password", "database_name");
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
if ($result = $mysqli->query("SELECT * FROM members WHERE email ='$email'")) {
while ($row = $result->fetch_array(MYSQLI_ASSOC)){
$firstname = $row['firstname'];
}
$result->close();
}
$mysqli->close();
答案 2 :(得分:0)
你在哪里需要mysql_num_rows?我非常怀疑这会奏效。我想你不能组合mysql函数,但不能确定,因为我多年没有使用mysql函数,你也不应该弃用它们。尝试使用mysqli。
答案 3 :(得分:0)
$query= mysql_num_rows(mysql_query("SELECT * FROM members WHERE email='$email'"));
应该是
$query=mysql_query("SELECT * FROM members WHERE email='$email'");
答案 4 :(得分:0)
请远离使用mysql并开始使用mysqli或PDO,因为mysql函数现已弃用。
至于您的查询,这是一个例子:
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); // The Connection
$query = "SELECT * FROM members WHERE email ='$email'"; // MySQL Query
$data = mysqli_query($dbc, $query); // Perform the Query
$row = mysqli_fetch_array($data); // Work with the data using $row
$firstname = $row['firstname'];
显示输出:
while($row = mysqli_fetch_array($data)) {
// do something to echo
}