我有这个问题:
$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,因为我想回应数字。
答案 0 :(得分:2)
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所说,你的桌子应该正常化。