读取 mysql 表直到第一个逗号

发布于 2024-11-26 06:15:55 字数 404 浏览 1 评论 0原文

我有这个查询:

$sql = "SELECT * FROM tutorials WHERE ( device LIKE '%".$device."%' AND version LIKE '%".$version."%' AND firmware LIKE '%".$firmware."%' ) LIMIT 1";

表格:

device | a, b, c, d
version | 2, 3, 4
firmware | 5

现在我想要从设备(a),版本(2)和固件(5)到第一个逗号的第一个字符串,或者如果没有逗号则整个文本。

我想到了 explode(),但我真的不知道。我更喜欢 php,因为我想回显这些数字。

I have this query:

$sql = "SELECT * FROM tutorials WHERE ( device LIKE '%".$device."%' AND version LIKE '%".$version."%' AND firmware LIKE '%".$firmware."%' ) LIMIT 1";

The table:

device | a, b, c, d
version | 2, 3, 4
firmware | 5

Now I want to have the first string from device(a),version(2) and firmware(5) til the first comma, or if there is no comma the whole text.

I thought of explode(), but I dont really know. I would prefer php, since I want to echo the numbers.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凉栀 2024-12-03 06:15:55

MySQL 解决方案:

SELECT  SUBSTRING_INDEX(`device`, ',', 1),
    SUBSTRING_INDEX(`version`, ',', 1),
    SUBSTRING_INDEX(`firmware`, ',', 1)
FROM `tutorials` WHERE `id`=123 LIMIT 1 /*
    Why LIMIT? `id` should be unique */

PHP 解决方案:

function first_value($str) {
    $pos = strpos($str, ',');
    if ($pos !== false)
        return substr($str, 0, $pos);
    return $str;
}
$q = mysql_query('SELECT * FROM `tutorials` WHERE `id`='. (int)$id .' LIMIT 1 ');
$arr = mysql_fetch_array($q);

$arr['device'] = first_value($arr['device']); // etc

但正如 Kerrek SB 所说,您应该真正规范化您的表。

MySQL solution:

SELECT  SUBSTRING_INDEX(`device`, ',', 1),
    SUBSTRING_INDEX(`version`, ',', 1),
    SUBSTRING_INDEX(`firmware`, ',', 1)
FROM `tutorials` WHERE `id`=123 LIMIT 1 /*
    Why LIMIT? `id` should be unique */

PHP solution:

function first_value($str) {
    $pos = strpos($str, ',');
    if ($pos !== false)
        return substr($str, 0, $pos);
    return $str;
}
$q = mysql_query('SELECT * FROM `tutorials` WHERE `id`='. (int)$id .' LIMIT 1 ');
$arr = mysql_fetch_array($q);

$arr['device'] = first_value($arr['device']); // etc

But as being said by Kerrek SB, your should really normalize your table.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文