SQL查询在PHP中返回null,但在MySQL中是正确的结果

时间:2014-07-22 19:26:48

标签: php mysql sql pdo auto-increment

我正在构建一个用于将数据插入MySQL数据库的Web应用程序。我正在使用PHP的PDO API来查询数据库以获取自动递增的主键。当我在MySQL控制台中运行查询时,它会生成正确的输出。但是当我尝试在PHP中运行查询时,它返回null。

查询:

mysql> SELECT Auto_Increment FROM information_schema.tables WHERE table_name='charlist';

MySQL控制台中的结果:

+----------------+
| Auto_Increment |
+----------------+
|              7 |
+----------------+

相关的PHP代码:

    // Configuration.
    $username = "root";
    $password = "root";
    $hostname = "localhost";
    $dbname = "asoiaf";
    $tablename = "charlist";

    // Opens a connection to the database.
    try {
        $conn = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch(PDOException $e) {
        echo $e->getmessage();
    }

    // Gets all the information from POST.
    $autoidquery = "SELECT Auto_Increment FROM information_schema.tables WHERE table_name='$tablename'";
    $id = $conn->query("SELECT Auto_Increment FROM information_schema.tables WHERE table_name='$tablename'");
    // This should output the auto-incremented primary key, but nothing is output.
    echo $id."<br>Hello world";

页面上没有输出任何内容,但它应输出自动递增的ID,然后输出“Hello world”。我看不到任何打字错误。为什么查询在控制台中工作,而在PHP中不工作?

3 个答案:

答案 0 :(得分:1)

您需要获取结果

$qry = $conn->query("SELECT Auto_Increment FROM information_schema.tables WHERE  table_name='$tablename'");
$result = $qry->fetch();
$id = $result['Auto_Increment'];
echo $id."<br>Hello world";

答案 1 :(得分:1)

PDO Query returns a PDO Statement,用于访问您需要以数组形式访问结果的所需结果。

echo $id['Auto_Increment'];

或者您可以从语句

中获取结果
echo $id->fetchColumn();

或使用PDO Prepare + fetchColumn将结果检索为整数。

许多方式导致罗马;)

答案 2 :(得分:1)

使用:     的print_r($ ID);

查看查询结果的内容。查询结果的输出是一个数组。你守着