这是我正在使用的PHP代码:
$query="select * from `myTable` where `email`='$email' limit 0,1";
if(empty($conn))
{
echo "not connected".PHP_EOL;
}
$result = mysql_query($query,$conn);
$row = mysql_fetch_array($result);
if(empty($row))
{
....
当在phpmyadmin中执行查询时,我选择了一行。
但是,当我在php中执行代码时,该行始终为空。
我尝试执行的其他几个查询也是如此。 mysql_query
总是失败。
可能出现什么问题?
答案 0 :(得分:2)
我觉得没有足够的代码可以看到发生了什么。但基于你向我们展示的内容,在你获得$ result并将其分配给$ row后你会得到一个if语句
if(empty($row)) {...doing something secret...}
这意味着如果返回的内容就像你期望的行那样会发生NOTHING因为(empty($ row))将为false而不执行。
答案 1 :(得分:1)
使用PDO尝试此操作:
<?php
$email = "example@example.com";
try {
//Instantiate PDO connection
$conn = new PDO("mysql:host=localhost;dbname=db_name", "user", "pass");
//Make PDO errors to throw exceptions, which are easier to handle
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//Make PDO to not emulate prepares, which adds to security
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$query = <<<MySQL
SELECT *
FROM `myTable`
WHERE `email`=:email
LIMIT 0,1;
MySQL;
//Prepare the statement
$stmt = $conn->prepare($query);
$stmt->bindParam(":email", $email, PDO::PARAM_STR);
$stmt->execute();
//Work with results
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
//Do stuff with $row
}
}
catch (PDOException $e) {
//Catch any PDOExceptions errors that were thrown during the operation
die("An error has occurred in the database: " . $e->getMessage());
}
强烈建议不要使用mysql_*
功能。这是产生破坏代码的保证。请从我给你的评论中的链接学习PDO或MySQLi,并使用它们。
答案 2 :(得分:0)
首先,确认$email
的值。在定义$query
之前回应它,以确保它符合您的想法。
如果您已经这样做了,那么您就知道问题所在 - 相反,您的链接标识符$conn
可能就是问题所在。不要使用链接标识符,请尝试将查询的第二个参数留空,而是在脚本开头运行mysql_connect()
。这是99.5%的时间做事的最佳方式。