首页 > 解决方案 > 显示来自 MySQL 的多个值

问题描述


我是 PHP 的新手
这是我的表的截图。单击此处查看屏幕截图
我要显示“教育”的所有值。

如 :

 My 1st value is 53
 My 2nd value is 43
 My 3rd value is 57
 My 4th value is 44

标签: phpmysql

解决方案


正如u_mulder指出的那样,您可以使用explode将字符串拆分为一个值数组,然后遍历该列表 - http://php.net/manual/en/function.explode.php

下面,我定义了一个名为的新函数ordinal,它将在给定任意数字的情况下输出第一个、第二个、第三个等。

除此之外,您还可以sprintf使用占位符格式化字符串。

示例 http://sandbox.onlinephpfunctions.com/code/1459ec55d6bc9f28a03645625a22261ede093342

编辑 添加代码以打开错误报告。

<?php

// Turn on error reporting
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Turn MySQL errors into PHP exceptions
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

// Establish DB connection
$db = new mysqli("localhost","username","password","dbname");
$sql = "select * from tbldatingusermaster order by userid desc";
$result = $db->query($sql);

while($data = $result->fetch_object()){
    // Split the list of values into an array
    $arrayOfEducationValues = explode(',', $data->education);

    // Define what you want your output to look like.
    $format = "My %s value is %d \n";

    // Loop over the list of values and then output each one using the 
    // formatted string
    foreach ($arrayOfEducationValues as $key => $education) {
        // `$key` here refers to current index of the array. Since
        // array idexes usually start at 0 you need to add `1` to it.
        echo sprintf($format, ordinal($key+1), $education);
    }
}

/*
* Taken from https://stackoverflow.com/a/3110033/296555
*/
function ordinal($number) {
    $ends = array('th','st','nd','rd','th','th','th','th','th','th');
    if ((($number % 100) >= 11) && (($number%100) <= 13))
        return $number. 'th';
    else
        return $number. $ends[$number % 10];
}

推荐阅读