Имам някакъв MySQL код, който написах и функционира безупречно:
<?php
include 'dbconfig.php';
$startdate = date("Y-m-d", strtotime($_GET['startdate']));
$class = ($_GET['class']);
$city = ($_GET['city']);
$coverage = ($_GET['coverage']);
$sql="SELECT day, week, month FROM pricing
WHERE '" . $startdate . "' between start_date AND end_date and class='" . $class . "' and city='" . $city . "' and coverage='" . $coverage . "'";
$result = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($result)) {
$date_ranges = array(
'day' => $row['day'],
'week' => $row['week'],
'month' => $row['month']
);
mysqli_close($conn);
}
$json = json_encode($date_ranges);
echo $json;
?>
Въпреки това ми казаха да използвам PDO, за да бъда по-сигурен, така че конвертирам кода в PDO и стигнах дотук:
<?php
include 'dbconfig.php';
$startdate = date("Y-m-d", strtotime($_GET['startdate']));
$class = ($_GET['class']);
$city = ($_GET['city']);
$coverage = ($_GET['coverage']);
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT day, week, month FROM pricing
WHERE :startdate between start_date AND end_date and class=:class and city=:city and coverage=:coverage");
$stmt->bindParam(':startdate', $startdate);
$stmt->bindParam(':class', $class);
$stmt->bindParam(':city', $city);
$stmt->bindParam(':coverage', $coverage);
$stmt->execute();
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
echo $v;
}
}
catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
?>
Частта, която е проблемът, със сигурност е следната:
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
echo $v;
Опитвам се изходът да изглежда така (същия като първия):
{"day":"35","week":"150","month":"650"}
Може ли някой да ми покаже как да завърша това? Благодаря!
TableRows
? Защо използватеRecursiveArrayIterator
? - person Don't Panic   schedule 28.09.2019