Php 从数据库读取的PDO
我已经用PDO编写了一个代码,从数据库中读取一个表。 我试图重复我的结果,但我得到一个空白页没有错误 我的代码是:Php 从数据库读取的PDO,php,pdo,Php,Pdo,我已经用PDO编写了一个代码,从数据库中读取一个表。 我试图重复我的结果,但我得到一个空白页没有错误 我的代码是: <?php include 'config.php'; id = "264540733647332"; try { $conn = new PDO("mysql:host=$hostname;dbname=mydata", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO:
<?php
include 'config.php';
id = "264540733647332";
try {
$conn = new PDO("mysql:host=$hostname;dbname=mydata", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
$result = $conn->query("SELECT * FROM mytable WHERE id='".$id."';");
if ($result->fetchColumn() != 0)
{
foreach ( $result->fetchAll(PDO::FETCH_BOTH) as $row ) {
$Data1 = $row['Data1'];
$Data2 = $row['Data2'];
echo $Data2;
}
}
?>
我假设只有一条id为“264540733647332”的记录
问题是$result->fetchColumn()
调用读取结果集中的第一行,然后前进到下一个结果。由于只有一个结果,因此对$result->fetchAll()
的后续调用不会返回任何结果,因此不会显示任何数据
要修复此问题,请将fetchColumn
替换为rowCount
:
<?php
include 'config.php';
id = "264540733647332";
try {
$conn = new PDO("mysql:host=$hostname;dbname=mydata", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
$result = $conn->query("SELECT * FROM mytable WHERE id='".$id."';");
if ($result->fetchColumn() != 0)
{
foreach ( $result->fetchAll(PDO::FETCH_BOTH) as $row ) {
$Data1 = $row['Data1'];
$Data2 = $row['Data2'];
echo $Data2;
}
}
?>
需要更改的内容很少:
- 别忘了
$
- 如果要捕获错误,请捕获整个pdo代码
- 您可以使用
rowCount()
对行进行计数
- 如果记录计数为0,则回显某些内容
也可以使用准备好的语句,例如:
$result = $conn->prepare("SELECT * FROM mytable WHERE id=:id");
$result->execute(array(':id'=>$id));
请尝试以下操作:-$result=$conn->query(“从mytable中选择*,其中id=”“$id.””)代码>你好,我做了更改,但没有结果,也没有错误。我还是看不到回声。感谢您的建议,$result
可能会失败。回显查询并查看直接执行时是否有效。你也应该使用准备好的陈述。我猜,$id
来自客户?…或者更确切地说,这是您的代码中的输入错误<代码>id=“264540733647332”代码>id前面没有$
?另外,如果数据库中的id
设置为int
,则264540733647332
太大。这是一个打字错误,而不是我的代码。对不起!id就是这里的一个例子!非常感谢。这个丢失的$在这里是一个输入错误,而不是在我的代码中。对不起!非常感谢您的解决方案。代码正在运行!!非常感谢您的解决方案。我用rowCount更改了fetchColumn,代码现在正在运行!
$result = $conn->prepare("SELECT * FROM mytable WHERE id=:id");
$result->execute(array(':id'=>$id));