gpt4 book ai didi

php - 如何在 MySQL/PHP 中选择特定条目

转载 作者:行者123 更新时间:2023-11-30 23:13:14 25 4
gpt4 key购买 nike

我正在处理这个问题。有表orders(oid,datetime,quantity,title,用户名,mid).

orders 表是从 php 代码更新到特征 oid,datetime,quantity, title,username 是关注的。问题是我想根据日期时间和用户名对每个条目进行分类,以便在订单代码下收集这些条目,以便进行订购。 (我暂时想不出别的)。问题是我如何才能选择那些对应于相同用户名和相同日期时间的条目。

例如,如果我有 3 个条目(freddo espresso、latte、freddoccino)属于同一个订单程序(由相同的用户名发布,完全相同的日期时间)并且我需要将它们作为完整的订单呈现给我的用户.

下面是表 orders 的结构:

CREATE TABLE IF NOT EXISTS `orders` (
`oid` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`datetime` DATETIME NOT NULL,
`quantity` INT NOT NULL,
`sum` FLOAT(4,2) NOT NULL,
`title` VARCHAR(30) COLLATE utf8_unicode_ci NOT NULL,
`username` VARCHAR(30) COLLATE utf8_unicode_ci NOT NULL,
`mid` VARCHAR(30) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`oid`),
KEY `username`(`username`,`mid`,`title`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=10000;

特征标题是来自表 products 的外键:

CREATE TABLE IF NOT EXISTS `products`(
`title` VARCHAR(30) COLLATE utf8_unicode_ci NOT NULL,

`descr` TEXT(255),
`price` FLOAT(4,2) NOT NULL,
`popularity` INT NOT NULL,
`cname` VARCHAR(20) COLLATE utf8_unicode_ci NOT NULL,
`mid` VARCHAR(30) COLLATE utf8_unicode_ci NOT NULL ,
PRIMARY KEY(`title`),
KEY `cname` (`cname`, `mid`)
)ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=10000;

对不起,如果我有点不全面,虽然我真的需要一些帮助才能得出结论。有任何想法吗?提前致谢!

最佳答案

如果你知道 datetime 是什么值和 username然后你可以简单地使用值:

SELECT * FROM orders WHERE username = '$username' AND datetime = '$datetime'

但是,您最好将其拆分为两个单独的表;像这样的东西:

Orders
OrderID
OrderTime
UserName

Items
ItemID
OrderID
Title

那么你可以通过以下方式搜索:

SELECT Orders.OrderID, Orders.UserName, Items.Title
FROM Orders
INNER JOIN Items ON Orders.OrderID = Items.OrderID
WHERE
Orders.UserName = '$username'
AND
Orders.OrderDate = '$datetime'

添加订单时,您将记录添加到 Orders首先,然后使用那个 OrderID并将其添加到 Items 中插入的每个项目...

插入示例

$mysqli;   //Assuming your connection to the database...
$items; //Assuming an array of items for the order like: array('Coffee', 'Tea')
$username; //Assuming the user name to be inserted for the order

$mysqli->query("INSERT INTO Orders(`OrderTime`, `UserName`) VALUES(NOW(), '$username')");
$orderid = $mysqli->insert_id;
foreach($items as $item){
$mysqli->query("INSERT INTO Items (`OrderID`, `Title`) VALUES($orderid, '$title')");
}

注意:您应该确保在插入数据库之前清理数据...


存储JSON

存储 JSON在数据库中将要求您确保使用适当长度的字段数据类型(例如 blob)。

您提到您检索了 titles作为表单中的数组,所以我现在将其称为 $titles .

保存到数据库

$username      = '...';                // Username or id to store in database with order
$titles = array(.....); // Array of titles from form
$encodedTitles = json_encode($titles); // Convert to JSON

$mysqli->query("INSERT INTO table_name (titles_field, username_field, date_field) VALUES ('$titles', '$username', NOW())"); // Save to database (assuming already open connection

从数据库中检索

$result = $mysqli->query("SELECT titles FROM table_name WHERE username = 'username_value' AND date_field = 'date_value'"); //Run query to get row
$row = $result->fetch_assoc(); // Fetch row
$titles = json_decode($row['titles']); // This is the same as the `titles` array from the from above!

关于php - 如何在 MySQL/PHP 中选择特定条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19014874/

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