使用 mysql 和 php 搜索除日期字段外的整个表

Posted

技术标签:

【中文标题】使用 mysql 和 php 搜索除日期字段外的整个表【英文标题】:search entire table except date fields using mysql and php 【发布时间】:2014-07-30 10:02:56 【问题描述】:

我有一张大表,想一次性搜索所有字段,但有些字段是日期,所以我创建的搜索在遇到这些字段时会失败。

在使用这种类型的搜索时,有没有办法排除某些类型的字段?

$table = 'accounts';
$condition = 'tracey';

$sql = "SHOW COLUMNS FROM accounts";

$result = mysqli_query($mysqli,$sql);

if (mysqli_num_rows($result) > 0)

    $i=0;
    while ($row = mysqli_fetch_array($result))
    
        if($i==0)
        
            $q="select * from ".$table." where ".$row[0]." LIKE %".$condition."%";
        
        else
        
            $q.=" or ".$row[0]."="." LIKE %".$condition."%";
        
        $i++;
    


$sql = $q;
$result = mysqli_query($mysqli,$sql) or die(mysqli_error($mysqli));
$row = mysqli_fetch_array($result);
$answer = $row['phone_office'];
echo '<br><br>answer = '.$answer;

或者也许有人可以建议一种更好的方法来一次性搜索表中的所有字段?

【问题讨论】:

***.com/questions/14392126/…这个链接可能对你有帮助 【参考方案1】:

要排除某些类型的字段您需要将查询 SHOW COLUMNS FROM accounts 更改为这个:

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS 
WHERE (table_name=".$table.")AND(NOT(DATA_TYPE IN ('field_type_1','field_type_2',...)));

其中field_type_i 是排除类型的名称(例如'timestamp'

【讨论】:

谢谢,但我收到一个错误未知列帐户。 accounts 是表名

以上是关于使用 mysql 和 php 搜索除日期字段外的整个表的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jquery Datepicker 进行 PHP MYSQL 日期范围搜索

用php在mysql中,如何截取最大日期和最小日期

php mysql怎样根据数据库表中的出生日期搜索出年龄大于65岁的记录

仅从日期时间字段(mysql)中提取日期并将其分配给 php 变量

没有 index.php,除主页外的 Magento URL 不起作用

在MySQL中显示除少数记录外的所有记录[重复]