mysql_query无效

时间:2012-06-26 15:58:08

标签: php mysql

这是我正在使用的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总是失败。

可能出现什么问题?

3 个答案:

答案 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%的时间做事的最佳方式。

请参阅:http://php.net/manual/en/function.mysql-connect.php