首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从SQL数据库中选择在特定列中包含特定文本字符串的所有行。

问从SQL数据库中选择在特定列中包含特定文本字符串的所有行。
EN

Stack Overflow用户
提问于 2013-06-29 21:54:52
回答 1查看 9.7K关注 0票数 1

我一直在查看其他的帖子,比如this和this,但是没有什么适合我的具体案例。

我有一张这样的桌子:

代码语言:javascript
复制
|    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   |

我希望能够找到哪些名称也是对另一个名称的引用,并将它们转换为链接,这样用户就可以单击它们并获得它所引用的名称的列表。

例如,如果用户单击John,他/她将得到如下所示的表:

代码语言:javascript
复制
|    Name    |    Reference    |    Etc...    |
|------------|-----------------|--------------|
|  Jane Doe  |   John Doe      |  Blah blah   |
|  Steve Ex  |   John Doe      |  Blah blah   |

目前我被困在这里:

代码语言:javascript
复制
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;
}

我试过LIKE,CONTAINS,like '%' || TEXT || '%'等等,但是都没有用。有什么想法吗?

在下面给出的答案中,我正在试验这两种可能性。第一个我有麻烦了。当我想echo从Select获得的数组元素时,我得到一个警告:非法字符串偏移'X' .错误。如果我在其中一个检索到的数组上运行var_dump,这就是我得到的结果。我不太清楚到底是怎么回事。在我看来,这似乎是一个可行的数组:

代码语言:javascript
复制
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)

好的。解决了。这个问题太愚蠢了..。猜猜谁觉得自己是个真正的混蛋。无论如何,问题是,如果SQL行为一行,则我试图传递一个数字。我错误地复制了我的选择函数,当用户想要通过它的ID在一行中获取信息时,我使用它。问题一直在那里,我就像一只躲在树后面的大象一样想念它。不管怎么说,这就是..。对此很抱歉。工作守则是:

代码语言:javascript
复制
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;
}

感谢@dimaninc的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-29 22:00:47

代码语言:javascript
复制
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;
}

INSTR比在这种情况下更快

或者,如果你需要,你应该正确地使用它:

代码语言:javascript
复制
$query = "SELECT * FROM items WHERE reference LIKE '%".mysql_real_escape_string($ref)."%'";
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17385052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档