Que*_*o27 0 php sql select contains sql-like
我一直在看其他帖子,比如这个和这个但是没有什么适用于我的具体情况.
我有这样一张桌子:
| Name | Reference | Etc... |
|------------|-----------------|--------------|
| John Doe | | Blah blah |
| Jane Doe | John Doe | Blah blah |
| Mike Small | Jane Doe | Blah blah |
| Steve Ex | John Doe | Blah blah |
| Mary White | Mike Small | Blah blah |
Run Code Online (Sandbox Code Playgroud)
我希望能够找到哪些名称也是其他名称的引用,并将它们转换为链接,以便用户可以单击它们并获取这是引用的名称列表.
例如,如果用户点击John Doe,他/她将获得如下表格:
| Name | Reference | Etc... |
|------------|-----------------|--------------|
| Jane Doe | John Doe | Blah blah |
| Steve Ex | John Doe | Blah blah |
Run Code Online (Sandbox Code Playgroud)
目前我被困在这里:
function find_items_by_ref($ref) {
db_connect();
$query = sprintf("SELECT * FROM items WHERE reference LIKE '%s'", mysql_real_escape_string($ref));
$result = mysql_query($query);
$row = mysql_fetch_array($result);
return $row;
}
Run Code Online (Sandbox Code Playgroud)
我试着LIKE和CONTAINS以及like '%' || TEXT || '%'等等等等,但没有任何工程.请问有什么想法吗?
我正在尝试下面给出的答案中的两种可能性.第一个我遇到了麻烦.当我想要echo从SQL Select获得的数组元素时,我得到一个警告:非法字符串偏移'X' ...错误.如果我var_dump在其中一个检索到的数组上运行,这就是我得到的.我不太清楚什么是错的.对我来说似乎是一个工作阵列:
array (size=16)
0 => string '37' (length=2)
'id' => string '37' (length=2)
1 => string 'Steve Ex' (length=8)
'name' => string 'Steve Ex' (length=8)
2 => string 'John Doe' (length=8)
'reference' => string 'John Doe' (length=8)
3 => string 'Blah blah' (length=9)
'etc' => string 'Blah blah' (length=9)
Run Code Online (Sandbox Code Playgroud)
好.解决了它.问题是如此愚蠢......猜猜谁是一个真正的屁股.无论如何,事情是我试图传递一个数字,如果SQL行作为一行.我错误地复制了我在用户想要通过其ID获取单行信息时使用的Select函数.问题一直存在,我就像一只躲在树后面的大象一样错过了它.无论如何,那是...对不起.工作代码是:
function find_items_by_ref($ref) {
db_connect();
$query = sprintf("SELECT * FROM items WHERE INSTR(reference,'".mysql_real_escape_string($ref)."')>'0' ORDER BY name ASC");
$result = mysql_query($query);
$result = db_result_to_array($result);
return $result;
}
Run Code Online (Sandbox Code Playgroud)
感谢@dimaninc的帮助!
function find_items_by_ref($ref) {
db_connect();
$query = "SELECT * FROM items WHERE INSTR(reference,'".mysql_real_escape_string($ref)."')>'0'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
return $row;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,INSTR比LIKE快
或者如果你需要LIKE,你应该正确使用它:
$query = "SELECT * FROM items WHERE reference LIKE '%".mysql_real_escape_string($ref)."%'";
Run Code Online (Sandbox Code Playgroud)