【发布时间】:2014-10-24 22:57:47
【问题描述】:
我正在开发一个 Web 应用程序来维护餐厅的管理,其功能如下:
- 显示所有订单的列表,以及点击一个订单时的具体数据
- 创建或删除订单
- 维护财务
- 等等……
首先我习惯了使用mysqli 扩展,并且正在使用这样的函数(使用return 语句):
function get_all_data_by_order_id($order_id) {
$query = "SELECT customers.first_name,
customers.last_name,
customers.email_adress,
customers.customer_info,
orders.order_info,
orders.total_price,
orders.location,
orders.created
FROM customers
INNER JOIN orders ON customers.id = orders.customer_id
WHERE orders.id = {$order_id}";
return $this->query($query);
}
现在我想用 PDO 尝试一下,这样我可以更轻松地使用准备好的语句。
我有这个 php 文件:
try {
$connection = new PDO('mysql:host=localhost;dbname=broodjes-service', 'root', 'password');
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if (!empty($_GET['order_id'])) {
$order_id = $_GET['order_id'];
$query = "SELECT customers.first_name,
customers.last_name,
customers.email_adress,
customers.customer_info,
orders.order_info,
orders.total_price,
orders.location,
orders.created
FROM customers
INNER JOIN orders ON customers.id = orders.customer_id
WHERE orders.id = :order_id";
$statement = $connection->prepare($query);
$statement->bindParam(":order_id", $order_id, PDO::PARAM_INT);
$statement->execute();
$order_data = $statement->fetch(PDO::FETCH_ASSOC);
$orderObject = array();
$orderObject['header'] = mysqli_fetch_array($order_data);
echo json_encode($orderObject);
$connection = null;
}
} catch (PDOException $e) {
echo $e->getMessage();
die();
}
Wich 被这段 javascript 调用,让它看起来好像页面没有重新加载:
function select_order(order) {
var item = $(order);
if (!item.hasClass("selectedRow")) {
if (!selectedOrderInformation.is(":visible")) {
switchScreen(selectedOrderInformation, financeOverview);
}
item.parent().find(".selectedRow").removeClass("selectedRow");
item.addClass("selectedRow");
selectedOrderInformation.html("loading......");
$.ajax({
url: "includes/functions/select-order.php",
type: "get",
dataType: 'json',
data: {order_id: item.attr("data-order-index")},
success: function (data) {
selectedOrderInformation.html('<h3>' + data['header']['first_name'] + '</h3>'); }
});
} else {
console.log("DEBUG: Row is already selected");
}
}
问题
当我尝试在其中的列表中选择一个订单时,什么也没有发生。屏幕停留在“正在加载...”屏幕上。似乎它甚至没有执行查询。
问题
我怎样才能让我的 javascript 文件通过部署 mysql 数据库中的数据对 php 文件做出实际反应?
【问题讨论】:
-
您是否在控制台窗口中遇到任何错误?
-
@VikasArora 不。虽然我没有注意到,但我正在记录它们。
-
您将 MySQL API 与 PDO 和
mysqli_fetch_array混合在一起;保持一致。 -
在 PHP 页面中 var_dump $order_data 得到什么?