Php 在MySQL的两列中搜索一个值

Php 在MySQL的两列中搜索一个值,php,mysql,search,joomla,Php,Mysql,Search,Joomla,我在php中的MySQL代码有问题。我为Joomla网站制作了自己的搜索插件。 此插件从搜索输入中搜索一个值。您可以在搜索框中输入公司注册号或公司名称。扩展应该在一个表中的两列中查找 SQL表“注册公司” 在我的php代码中,我有SQL选择 $db = JFactory::getDbo(); $query = $db->getQuery(true); $query = "SELECT * FROM registered_companies

我在php中的MySQL代码有问题。我为Joomla网站制作了自己的搜索插件。 此插件从搜索输入中搜索一个值。您可以在搜索框中输入公司注册号或公司名称。扩展应该在一个表中的两列中查找

SQL表“注册公司”

在我的php代码中,我有SQL选择

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query = "SELECT *
            FROM registered_companies 
            WHERE ".$searchInput." IN(regnumber, name)";
对于这段代码(我尝试了几个变体),它只有在我尝试查找number(regnumber)时才起作用。如果输入类似“company1”的文本字符串,SQL将在“where子句”中返回错误1054未知列“company1”

我尝试使用
WHERE regnumber,比如“$searchInput;”
这很好,但当然该命令只搜索一列,而我的所有多个LIKE和OR命令最终都是一个错误

我做错了什么?如何键入SQL命令来执行我想要的操作


thx以获取帮助

首先,您需要将%添加到搜索字符串中

$searchInput = "%".$searchInput."%";
然后准备、绑定、执行和获取

$query = "SELECT * FROM registered_companies WHERE regnumber LIKE :searchInput OR name LIKE :searchInput";
$dbResult = $db->prepare($sql);
$dbResult->bindValue(':searchInput', $searchInput, PDO::PARAM_STR);
$dbResult->execute();

while($line = $dbResult->fetch(PDO::FETCH_ASSOC)){ 
   //... do what you need ... 
   // $name = $line['name'];
}

您应该将SELECT语句改为:

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query = "SELECT *
            FROM registered_companies 
            WHERE regnumber = ".$searchInput." OR name LIKE '".$searchInput."%'";
这似乎可行,但要注意SQL注入。您应该使用准备好的语句。请查看PHP文档中准备好的语句


根据您对
regnumber
name
列的容量,您必须更改
=
类似的

,您需要处理两种不同的情况(如果$searchInput是TEXT或INT)

我建议你读一下“案例”:


其中regnumber如“stringTOSearch”或name如“stringTOSearch”起作用,谢谢。我在regnumber如“stringTOSearch”或name如“%stringTOSearch%”处添加了此[code]
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query = "SELECT *
            FROM registered_companies 
            WHERE regnumber = ".$searchInput." OR name LIKE '".$searchInput."%'";