Php 为什么我的PDO$stmt->;bind_result()函数调用是否在执行SELECT查询后挂起?
我有一个MySQL数据库,表“Test”有一列“TestData”。TestData有三条记录具有以下值:“这是值1”,“这是另一个字符串”,以及 “第三只是为了运气” 我编写了以下PHP代码来检索记录Php 为什么我的PDO$stmt->;bind_result()函数调用是否在执行SELECT查询后挂起?,php,pdo,Php,Pdo,我有一个MySQL数据库,表“Test”有一列“TestData”。TestData有三条记录具有以下值:“这是值1”,“这是另一个字符串”,以及 “第三只是为了运气” 我编写了以下PHP代码来检索记录 <?php try { $hostname = "redacted"; $username = "redacted"; $password = "redacted"; $database = "redacted"; $conn = new PDO
<?php
try {
$hostname = "redacted";
$username = "redacted";
$password = "redacted";
$database = "redacted";
$conn = new PDO("mysql: host=$hostname; dbname=$database", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT TestData FROM Test";
$stmt = $conn->prepare($sql);
$stmt->execute();
}
catch(PDOException $e)
{
$finalResult = $finalResult . "," . $e->getMessage();
}
echo "you are here (" . $stmt->rowCount() . ")<br>";
if ($stmt->rowCount() > 0) {
echo "found (" . $stmt->rowCount() . ")<br>";
$stmt->bind_result($td);
echo "bind successful<br>";
while ($stmt->fetch()) {
echo "testdata (" . $td . ")<br>";
}
} else {
echo "nothing found<br>";
}
?>
我收到的结果是
你在这里(3)
发现(3)
PHP脚本永远不会到达“echo”bind successful'”语句。“$stmt->bind_result($td);”语句挂起 假设rowCount=3,查询似乎可以工作。我使用了基本相同的结构来执行正常工作的插入
我在做什么?谢谢。我将代码更改为以下代码,它可以正常工作
<?php
$hostname = "redacted";
$username = "redacted";
$password = "redacted";
$database = "redacted";
$conn = new mysqli($hostname, $username, $password, $database);
if ($conn->connect_error) {
fwrite(STDERR, "Connection failed: " . $conn->connect_error . "\n");
exit(1);
}
$sql = "SELECT TestData FROM Test WHERE ?";
$stmt = $conn->stmt_init();
if(!$stmt->prepare($sql)) {
print "Failed to prepare statement\n";
} else {
$stmt->bind_param("s", $condition);
}
$condition = "1 = 1";
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_array(MYSQLI_NUM)) {
foreach ($row as $r) {
echo "testdata(" . $r . ")<br>";
}
}
?>
不再为我混合PDO和MySQLi。谢谢你的帮助。很抱歉给您带来不便。如果您只是尝试使用php pdo从数据库获取项目,则需要存储结果
$results = $stmt->fetch(); //will get one row
$results = $stmt->fetchAll(); //will take all results and store in an array
希望这有帮助。我认为您需要使用
get\u result
而不是因为您有从Test中选择TestData
。综上所述:绑定_结果在pdo中不存在,这是一个mysqli方法。不要混合使用这两个API。Re:Bagus Tesa“使用get_result而不是bind_result”-在$stmt->get_result()中也会发生同样的情况。无论如何,我已经读到PDO是最好的方式。我将尝试第二种最好的方法,即无PDO。