使用网页上的DOM,我创建一个像这样的变量:
$adres = "Bruinbergstraat 2,Bruinberg,8730 Oedelem";
在MySql表中,我有很多记录;每条记录至少具有1个地址字段,其他记录具有更多地址字段(最多7个)。
当我使用此代码查找变量是否存在于任何地址字段中时:
$command = "Select * from alleclubs where (adres1 like '%" . $adres ."%' or adres2 LIKE '%" . $adres ."%' or adres3 LIKE '%" . $adres ."%' or adres4 LIKE '%" . $adres ."%' or adres5 LIKE '%" . $adres ."%' or adres6 LIKE '%" . $adres ."%' or adres7 LIKE '%" . $adres ."%')";
结果是找到0条记录。
如何解决此问题,以便获取变量所在列的表字段名称?
答案 0 :(得分:0)
要获取与变量匹配的列的表字段名称,可以执行以下操作-
"select *
from (select
concat_ws(',',
if( adres1 LIKE '%$adres%','adres1',NULL),
if( adres2 LIKE '%$adres%','adres2',NULL),
if( adres3 LIKE '%$adres%','adres3',NULL),
if( adres4 LIKE '%$adres%','adres4',NULL),
if( adres5 LIKE '%$adres%','adres5',NULL),
if( adres6 LIKE '%$adres%','adres6',NULL),
if( adres7 LIKE '%$adres%','adres7',NULL)
) as 'matched_column_names',stamnummer
from alleclubs ) derived_table
where matched_column_names != '' "
然后,当通过PHP迭代每一行时,只需在explode()
上使用,
即可获取每个列名。
注意:您还可以在MySQL中使用CASE
,但是如果有匹配项,CASE
就会停止。上面的查询将为您提供与$adres
的{{1}}匹配的所有列名称。
更新:
您可以使用示例each single row
如下所示直接在phpMyAdmin中进行检查-
Bruinbergstraat 2,Bruinberg,8730 Oedelem