如何从mysql行订购结果。目前我的代码是这样的:
make all
结果如下:
Klant gegevens(客户详情):姓名:Swag电邮:EnesDemirICT@gmail.com地址:Florisvosstraat 56电话:+31685035990评论:您叫我的名字是jason bourne。
Bestelling: 1x Pizza A medium [£7.45]£7.45 1x Pizza B medium [£7.45]£7.45 1x Pizza C medium [£7.45]£7.45 your items£22.35 free delivery total£ 22.35
Betaal状态:已完成
订单状态:已完成
删除Bon
正如您所看到的,客户的详细信息只是一团糟,我该如何订购,以便它看起来整洁。我有类似的想法:
姓名:姓名
电子邮件:电子邮件
地址:地址
电话:电话
评论:评论
编者注:问题是数据全部存储在数据库的一个变量中,并且数据库无法重构。需要从一个变量中提取数据并按上述方式重新构建。
答案 0 :(得分:1)
您拥有$klantgegevens
中的所有详细信息,并且该数据全部显示在一行中。这会给你带来麻烦。
您似乎没有规范化数据库中的数据。我建议创建一个类似customerDetails
的表名,然后包括id
,name
,email
等行
您的查询看起来像这样:
$resultSet = $conn->query("SELECT * FROM wp_wppizza_orders w
JOIN customerDetails c
ON w.id = c. id");
这样,当您运行查询时,每个查询都会显示在一个单独的行中,如下所示:
$name = $rows['name'];
$email = $rows['email'];
这样当你回显出行时,它会正确地将它们分开:
while($rows = $resultSet->fetch_assoc()) {
echo 'Name: '.$name.'<br/>';
echo 'email: '.$email.'<br/>';
}
编辑:由于您被迫拆分一行文本,因此您可能需要使用正则表达式执行某些操作。以下是如何为name
创建变量的示例。试试吧。您应该能够修改代码以处理这样的事情。
$klantgegevens = "Name : Swag Email : EnesDemirICT@gmail.com Address : Florisvosstraat 56 Telephone : +31685035990 Comments : Hi my name is jason bourne";
$names = preg_split('/Name :/', $klantgegevens);
array_shift($names);
echo "<pre>";
$name = print_r($names[0]);
echo $name;
您可以为剩余的行执行类似的操作。
再次编辑:这是一个更好的方法。我们只是抓住标签之间的行&#34; Name&#34;和&#34;电子邮件&#34;。比处理preg_split容易得多。下面的通配符只显示(.*?)
$klantgegevens = "Name : Swag Email : EnesDemirICT@gmail.com Address : Florisvosstraat 56 Telephone : +31685035990 Comments : Hi my name is jason bourne";
preg_match("'Name : (.*?)Email :'s", $klantgegevens, $name);
echo $name[1];
获取其他变量唯一需要做的就是更改字符串,例如将Name :
更改为Email :
,然后将Email :
更改为Address :
等