我的标记字符串保存为$value
,
$value
等于'my,name,is'
。
我现在要分开$value
并在我的数据库中搜索包含(例如:'name')的每一行......
我试过这样做 - >
$value = explode(',' , $value);
$query = "SELECT * FROM table WHERE words LIKE '%$value%' ";
但这似乎不起作用..
请帮忙:)
非常感谢,
我会感激任何答案......
答案 0 :(得分:0)
php explode()返回数组。 所以你需要使用$ value [0]等
或使用foreach循环:
$value = explode(',' , $value);
$i = 0;
$len = count($value);
$q = ' ';
foreach ($value as $val) {
$q .= 'words LIKE '.$val.' ';
if ($i != $len - 1) {
$q .= ' OR ';
}
$i++;
}
$query = "SELECT * FROM table WHERE '$q'";
没有测试过,但你明白了。如果您还需要其他任何评论。
编辑:
$value = 'name,is,my,etc';
$vals = explode(',', $value);
$i = 0;
$len = count($vals);
$string = '(';
foreach ($vals as $v) {
$string .= "'".$v."'";
if ($i != $len - 1) {
$string .= ',';
}
$i++;
}
$string .= ')';
echo $string;
这将回应:('name','is','my','etc') 您可以将其粘贴到此处并查看结果 http://writecodeonline.com/php/
答案 1 :(得分:0)
不可能如所写。 $value
将成为一个数组。在字符串上下文中使用数组时,它将成为文字文本Array
。
如果您想对该阵列的每个成员执行like
,则查询必须如下所示
SELECT ... WHERE words LIKE '%value1%' OR words LIKE '%value2' OR ....
这意味着将您的字符串扩展为数组,然后使用'% ... %'
和OR LIKE
业务包装该数组的每个成员。
评论后续:
$parts = explode(',', $value);
$in_clause = "'" . implode("','", $parts) . "'";
$sql = "SELECT ... IN ($in_clause)";
但请注意,这会让您对SQL注入攻击持开放态度。
答案 2 :(得分:0)
需要逐步学习
1)首先在后端获取完整字符串,例如“ expertsuggestion.com中的工作方式和赚钱方法”
2)按空格爆炸字符串
3)制作一个空数组。
4)foreach每次爆炸字符串传递都一个一个地查询,并将结果数组查询推入空数组
5)然后,您可以从数组中删除重复的ID。
6)您获得了最终的阵列。