Я пытаюсь запустить следующий script (безуспешно):
$variables = $db->query("SELECT * FROM table1 WHERE Session_ID = '$sess1'");
while($row = $variables->fetch()) {
//FETCH DATA
$id= $row["ID"];
$info = $db->query("SELECT * FROM table2 WHERE ID = $id");
while($row2 = $info->fetch()) {
$name = $row2["FNAME"]." ".$row2["LNAME"]; }
$phone = $row2["PHONE"];
}
//SEND CUSTOMER EMAIL
require("../email/email.php");
}
это возвращает ошибку: Неустранимая ошибка: вызов функции-члена fetch() для не-объекта в...
Пока я могу "решить" проблему, она уродлива. По сути, я должен сделать несколько вызовов перед тем, что я пытаюсь сделать ниже (что теоретически должно работать).
Любые идеи?
Насколько я могу судить, вам нужно извлечь все результаты из набора результатов, прежде чем вы сможете отправить новый запрос. Если вы используете MySQL, вы можете обойти это, вызвав $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true);
, но я бы советовал против него, так как он делает ваш код менее портативным и на основных плюсах PDO, абстракции базы данных теряется.
попробуйте это вместо
//prepare the query
$variables = $db->prepare("SELECT * FROM table1 WHERE Session_ID = :sess1");
$info = $db->prepare("SELECT * FROM table2 WHERE ID = :ID");
//bind the variable :sess1 to $sess1
$variables->bindParam(':sess1', $sess1, PDO::PARAM_STR);
//execute the query
$variables->execute;
//fetch the result
$result = $variables->fetch(PDO::FETCH_ASSOC);
//set $result['ID'] to a variable and bind it to the variable :ID in our second query
$id = $result['ID'];
$info->bindParam(':ID', $id, PDO::PARAM_INT);
while($row2 = $info->fetch()) {
$name = $row2["FNAME"]." ".$row2["LNAME"]; }
$phone = $row2["PHONE"];
}
//SEND CUSTOMER EMAIL
require("../email/email.php");
}
execute
. Как это решит проблему?