новичок здесь, и я нахожусь в своем уме с этой проблемой. Притча проста; Я пытаюсь выбрать идентификатор пользователя из базы данных на основе значения из файла cookie сеанса. Я подтвердил, что SQL работает так, как я запускал его через сам sql, и единственное, о чем я могу думать, — это то, что он не выполняется или мои выборки или привязки неверны.
<?php
session_start();
$cart = $_SESSION["cart"];
try{
require "connect.php";
$id = "SELECT id_no FROM eCustomer WHERE surname = :uid";
echo $id . '<br />';
$idfetch=$dbh->prepare($id);
$idfetch->bindValue(":uid", $_SESSION["uid"]);
$idfetch->execute();
$customer_id = $idfetch["id_no"];
echo $customer_id;
$dbh=null;
} catch (PDOExeption $e){
echo $e;
}
?>
Это должно отразиться на моем браузере
SELECT id_no FROM eCustomer WHERE surname = :uid
1
Но это только вывод
SELECT id_no FROM eCustomer WHERE surname = :uid
Я также попытался поместить переменную сеанса непосредственно в оператор SQL без bindValue
$id = "SELECT id_no FROM eCustomer WHERE surname = '" . $_SESSION["uid"] . "'";
Какие выходы в мой браузер
SELECT id_no FROM eCustomer WHERE surname = 'Mclellan'
(Макклелан в моем сессионном печенье)
Любая помощь будет принята с благодарностью.
Вы фактически выполнили заявление, но на самом деле вы этого не сделали ->fetch()
редактировал это еще. Вы пропустили эту часть:
$results = $idfetch->fetchAll(PDO::FETCH_ASSOC);
// print_r($results);
foreach($results as $row) {
echo $row['id_no'];
}
Примечание:
Если вам требуется только один ряд, то один ->fetch()
Вызов должен быть достаточным:
$row = $idfetch->fetch(PDO::FETCH_ASSOC);
echo $row['id_no'];
Похоже, вам не хватает фактической выборки результатов
вам нужна строка, как показано ниже $idfetch->execute();
$customerid = $idfetch->fetch(PDO::FETCH_ASSOC);
после этого ваш echo $customerid["id_no"];
должно сработать.
Причина в том, что все, что вам нужно сделать php — это выполнить запрос, не сказав ему, чтобы он извлекал результаты из запроса.
Кроме того, вышеизложенное относится к использованию PDO, поскольку, похоже, вы используете его. Если вы используете mysqli, то это, вероятно, не поможет.