- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理这个问题。有表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
在数据库中将要求您确保使用适当长度的字段数据类型(例如 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/
我是一名优秀的程序员,十分优秀!