我正在尝试从我的表中检索数据,此时只是将其回显到屏幕上。当执行此函数时,它确实获得了print_r($result)
向我显示的所有数据
数组中的数据。但是,当我尝试回显数组时,我得到Warning: mysql_fetch_assoc() expects parameter 1 to be resource, array given in .... line xxx
,其中xxx是行while ($row....
相当新的PHP,我在这里搜索了这个错误并发现了不少点击,但没有一个解决了我的问题。提前谢谢。
<?php
private
function vinSearch($vin_number)
{
if ($this->databaseConnection())
{
// Gather data based on Vin #
$this->db_connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$query_locate_customer = $this->db_connection->prepare('SELECT * FROM C_Customer , C_Car WHERE C_Car.vin_number=:vin_number and C_Car.id = C_Customer.id');
$query_locate_customer->bindValue(':vin_number', $vin_number, PDO::PARAM_STR);
$query_locate_customer->execute();
$result = $query_locate_customer->fetchAll() or die(mysql_error());
print_r($result);
while ($row = mysql_fetch_assoc($result))
{
echo $row['First_Name'];
echo $row['Last_Name'];
echo $row['Vin_Number'];
}
}
}
答案 0 :(得分:2)
您正在混合使用不同的数据库库:PDO用于连接/查询,然后是过时/已弃用的mysql_*()
函数以实际获取数据。
数据库库 NOT 可以互换,并且在其中任何一个中执行的连接/操作完全没用。
你已经开始使用PDO,坚持使用PDO。由于您在PDO中完成了fetch_all()
调用,因此$result
已经是一个包含所有结果行的数组。你根本不需要mysql_fetch_assoc(),只需要一个foreach循环:
$result = $query blah blah blah;
foreach($result as $row) {
....
}
答案 1 :(得分:0)
如果它已经是一个数组,你应该使用类似这样的东西而不是while循环
foreach($result as $row) {
echo $row['First_Name'];
echo $row['Last_Name'];
echo $row['Vin_Number'];
}
答案 2 :(得分:0)
请尝试以下
print_r($result);
以及错误是什么:
if($result === FALSE) {
die(mysql_error()); // TODO: better error handling
}
也尝试在phpmyadmin中执行SQL查询。