我正在构建一个用于将数据插入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中不工作?
答案 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);
查看查询结果的内容。查询结果的输出是一个数组。你守着