php / sql-如何在变量上使用LIKE运算符从数据库中提取结果?

时间:2017-06-08 02:37:00

标签: php mysql

正如问题所说,我想使用LIKE运算符,因此每当用户输入某些内容(如“M”)时,它将返回以“m”开头的所有数据库条目,而不是任何名为“M”的条目。这是我的代码

$strSymbolName = @$_REQUEST["searchSymbol"];
//searchSymbol is the variable with user Input inside

if(!empty($strSymbolName))
{ // process the form
 // Establish dbserver connection and default database

$db = $objDBUtil->Open();
 // Run a Query to get company name

$query = "SELECT symSymbol, symName FROM symbols " .
 "WHERE symSymbol =" . $objDBUtil->DBQuotes($strSymbolName);
//Retrieves company symbol and name from database. Stores this in result

$result = $db->query($query);`

我想做的是在WHERE语句中使用LIKE运算符,所以像 -

WHERE symSymbol LIKE = " . $objDBUtil->DBQuotes($strSymbolName);

但这不起作用......我如何在这里应用LIKE运算符?

5 个答案:

答案 0 :(得分:1)

$db = $objDBUtil->Open();

$param = $objDBUtil->DBQuotes($strSymbolName);

$query = "SELECT symSymbol, symName FROM symbols WHERE symSymbol LIKE '%$param%'";

$result = $db->query($query);

答案 1 :(得分:1)

只使用LIKE查询

$db = $objDBUtil->Open();
$query = "SELECT symSymbol, symName FROM symbols WHERE symSymbol LIKE '%$strSymbolName%'";
$result = $db->query($query);

答案 2 :(得分:0)

您需要在变量的末尾添加%,如:

WHERE symSymbol LIKE " . $objDBUtil->DBQuotes($strSymbolName) . "%";

这将返回以变量开头的任何内容。

答案 3 :(得分:0)

如果您要搜索以“M”开头的内容,请在值后面添加%,然后删除使用=时不需要的LIKE

$query = "SELECT symSymbol, symName FROM symbols WHERE symSymbol LIKE ".$objDBUtil->DBQuotes($strSymbolName)."%";

有关LIKE的详细信息,请查看here

  

WHERE CustomerName LIKE'a%'||查找以“a”开头的任何值

     

WHERE CustomerName LIKE'%a'||查找以“a”结尾的任何值

     

WHERE CustomerName LIKE'%或%'||查找在任何位置具有“或”的任何值

     

WHERE CustomerName LIKE'_r%'||查找在第二个位置具有“r”的任何值

     

WHERE CustomerName LIKE'a _%_%'||查找以“a”开头并且长度至少为3个字符的任何值

     

WHERE Con​​tactName LIKE'a%o'||查找以“a”开头并以“o”结尾的任何值

答案 4 :(得分:0)

在要查找的字符串后面使用%通配符。

$query = "SELECT symSymbol, symName FROM symbols WHERE symSymbol LIKE ".$objDBUtil->DBQuotes($strSymbolName)."%";

%和其他通配符:https://www.w3schools.com/sql/sql_wildcards.asp

以上链接摘录:

  

WHERE CustomerName LIKE' a%' ||查找任何开始的值   用" a"

     

WHERE CustomerName LIKE'%a' ||查找以...结尾的任何值   ""

     

WHERE CustomerName LIKE'%或%' ||查找具有"或"的任何值   在任何位置

     

WHERE CustomerName LIKE' _r%' ||查找具有" r"的任何值。   在第二个位置

     

WHERE CustomerName LIKE' a _%_%' ||查找以...开头的任何值   ""并且长度至少为3个字符

     

在哪里联系人名称喜欢' a%o' ||查找任何开始的值   与" a"并以" o"

结束