Как я могу извлечь строку из моего запроса PDO?

Я получаю синтаксическую ошибку в строке 18 этого кода, которая является разделом, содержащим переменную {$ user}.

Я хочу извлечь 3 переменные из запроса и поместить их в переменные PHP в коде.

$user = 'xxxxx';
$password = 'xxxxx';
$db = 'xxxxx';
$host = 'xxxxx';
$conn = new PDO("mysql:host=$host; dbname=$db", $user, $password);
//$conn = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $password, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);


//7 day users
$query = "SELECT user,email_address,DATEDIFF(NOW(),OrderDate) AS DateDiff
FROM MyTable WHERE DATEDIFF(NOW(),OrderDate) >= 6 AND enabled = 1 AND products_id IN (377) AND user = 'xxxxx'";
$stmt = $conn->query($query);
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
extract($row);
$to = "aa@ab.com";
$subject = "expiries - ";
$message = {$user};
$from = "aa@ab.com";
$headers = "From: $from";
mail($to,$subject,$message,$headers);


}

Ожидаемым результатом должно быть получение пользователя из SQL-запроса в переменную с именем $ message

0

Решение

while цикл на ->fetch избыточно Выборка возвращает не замужем строка данных в массив формат. Таким образом, цикл while здесь не нужен (поскольку циклы предназначены для циклического преобразования данных).

От документы:

PDOStatement :: fetch — извлекает следующую строку из набора результатов

FETCH_ASSOC:
PDO :: FETCH_ASSOC: возвращает массив, проиндексированный по имени столбца, как возвращено в ваших результатах s

Возвращаемое значение этой функции в случае успеха зависит от типа выборки. Во всех случаях FALSE возвращается при ошибке.

Так что он возвращает массив. Просто используйте:

try {
$data = $stmt->fetch(PDO::FETCH_ASSOC);
$column = $data['column'];
# your code
} catch (Exception $e) {
# err handling
}

Редактировать на основе комментария:

Если в результирующем наборе есть несколько строк, как вы их просматриваете?

Вы можете использовать foreach использование цикла -> FetchAll ()

PDOStatement :: fetchAll — возвращает массив, содержащий все строки результирующего набора

# here we declare our SQL and pass in params for a prepared statement
$sql = 'SELECT * FROM table where `field` = :value;';
$res = $conn->prepare($sql);
$res->execute(array(':value' => $_POST['value'])); # exec the qry

# loop through the data and print_r $row
foreach ($res->fetchAll(PDO::FETCH_ASSOC) as $row)
{
echo '<pre>'. print_r($row, 1) .'</pre>';
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector