gpt4 book ai didi

PHP、MySQL 和 PDO - 数据库缺少撇号的结果

转载 作者:行者123 更新时间:2023-11-29 07:58:27 26 4
gpt4 key购买 nike

我正在拔头发,希望有人能帮忙。

我已将查询函数从 mysql 更改为 mysqli,再更改为 PDO,但仍然无法获得显示撇号的结果 - 我可以在数据库字段中看到它们,因此知道它们在那里。

我正在使用一个类和一个函数,在其中为另一个页面提供查询:

我的查询:

SELECT sum(quantity) as Total, sum(earnings) as Revenue, title 
from `sales`
WHERE name = 'john smith'
AND paid = 'y'
AND earnings >0
GROUP BY title

我的功能:

   $db = new PDO("mysql:host=" . $db_host .";dbname=" . $db_database . ";charset=UTF-8",$db_user,$db_password,array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

$SQL = $query;
$stmt = $db->prepare($SQL);
$stmt->execute();

$stmt = $db->query($SQL);

while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
$result_array[] = $row;

}

$db = null;

return $result_array;

从数据库中提取数据没有任何问题,只是撇号在应有的位置丢失了。这给我带来了问题,因为我后来使用这些数据来搜索另一个表,但它无法匹配。

我真的希望在我完全秃头之前有人能帮助我。

感谢所有帮助,请善意:D

最佳答案

在您当前的代码中,您实际上查询了数据库两次,还有 PDO::fetchAll 它将返回您尝试对循环执行的操作。另外,为了获得更好的代码,请在函数外部初始化 PDO 连接,并使用 global 关键字获取函数内 $db 的范围,或将 $db 作为参数传递给函数。

<?php 
$db = new PDO("mysql:host=" . $db_host .";dbname=".$db_database, $db_user, $db_password,
array(
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
)
);

function select_sales($name='', $paid='y'){
global $db;

$query = "SELECT sum(quantity) as Total,
sum(earnings) as Revenue,
title
FROM `sales`
WHERE `name` = :name AND paid = :paid AND earnings >0
GROUP BY `title`";

$stmt = $db->prepare($query);

$stmt->bindParam(':name', $name);
$stmt->bindParam(':paid', $paid);

$stmt->execute();

return $stmt->fetchAll();
}
?>

关于PHP、MySQL 和 PDO - 数据库缺少撇号的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24495279/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com