如何正确地从一行订购数据

时间:2015-06-21 14:38:53

标签: php mysql row

如何从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

正如您所看到的,客户的详细信息只是一团糟,我该如何订购,以便它看起来整洁。我有类似的想法:

姓名:姓名

电子邮件:电子邮件

地址:地址

电话:电话

评论:评论

编者注:问题是数据全部存储在数据库的一个变量中,并且数据库无法重构。需要从一个变量中提取数据并按上述方式重新构建。

1 个答案:

答案 0 :(得分:1)

您拥有$klantgegevens中的所有详细信息,并且该数据全部显示在一行中。这会给你带来麻烦。

您似乎没有规范化数据库中的数据。我建议创建一个类似customerDetails的表名,然后包括idnameemail等行

您的查询看起来像这样:

$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 :