PHP - одиночный результат запроса - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь показать результат запроса в моей форме. Я хочу увидеть TOTAL_PRICE CUSTOMERID = 3.

Вот мой код:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "database_ps";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare("SELECT (COALESCE(a.price, 0) - COALESCE(f.price, 0)) AS total_price FROM tblcustomer c LEFT JOIN (SELECT CustomerID, SUM(Price) as price FROM tblappointment GROUP BY CustomerID ) a ON a.CustomerID = c.CustomerID LEFT JOIN (SELECT CustomerID, SUM(Price) as price FROM tblfinances GROUP BY CustomerID ) f ON f.CustomerID = c.CustomerID where c.CustomerID=3"); 
    $stmt->execute();

    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
}
catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
echo $result; 

$conn = null;
?>

моя форма php показывает в результате 1 вместо 50.

Я думаю, что это показывает номер строки.

SQL работает нормально. В конце концов, PHP-код неверен.

1 Ответ

0 голосов
/ 13 января 2019

Замените ваш код:

$result = $stmt->setFetchMode(PDO::FETCH_ASSOC); по $result = $stmt->fetch(PDO::FETCH_ASSOC); и echo $result; по эхо $result["total_price"];

setFetchMode устанавливает способ выборки по умолчанию (http://php.net/manual/es/pdostatement.setfetchmode.php),, но не извлекает данные из выполненного оператора (необходимо использовать выборку)

Ваш окончательный код будет:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "database_ps";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare("SELECT (COALESCE(a.price, 0) - COALESCE(f.price, 0)) AS total_price FROM tblcustomer c LEFT JOIN (SELECT CustomerID, SUM(Price) as price FROM tblappointment GROUP BY CustomerID ) a ON a.CustomerID = c.CustomerID LEFT JOIN (SELECT CustomerID, SUM(Price) as price FROM tblfinances GROUP BY CustomerID ) f ON f.CustomerID = c.CustomerID where c.CustomerID=3"); 
    $stmt->execute();

    $result = $stmt->fetch(PDO::FETCH_ASSOC); 
}
catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
echo $fetch["total_price"]; 

$conn = null;
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...