我正在创建一个PHP脚本,它接受来自用户的五个值,比如$var1
,$var2
,$var3
,$var4
,$var5
。所有这些都将存储为字符串。
现在假设我的MySQL数据库中有一个主键和5列,它还存储字符串(命名为column1
,column2
等等。)
所以问题是,考虑到我已经将PHP脚本连接到数据库并且所有其他必需的事情都已完成,那么最有效的查询或实现此任务的方法是什么:
将每个变量的值与表中的每个列进行比较。因此总的来说,在最坏的情况下,它会做5x5,即25次比较。
有这样的查询:
select * from table_name
where (var1,var2,var3,var4,var5) in (column1,column2,column3,column4,column5)
如果不是其他什么是最有效的方法来实现这一目标?
该查询必须返回$var
的任何匹配<{1}}的任何的行。
答案 0 :(得分:0)
这应该可以解决问题:
SELECT * FROM table_name
WHERE ? IN (column1,column2,column3,column4,column5)
OR ? IN (column1,column2,column3,column4,column5)
OR ? IN (column1,column2,column3,column4,column5)
OR ? IN (column1,column2,column3,column4,column5)
OR ? IN (column1,column2,column3,column4,column5)
在您的PHP中,您可以这样做:
$sth = $pdo->prepare( "the query above" );
$sth->execute( array( $var1, $var2, $var3, $var4, $var5 ) );
(假设您使用PDO)。