简体   繁体   English

如何在php中的mysql数据库中搜索字符串

[英]How to search for a string in a mysql database in php

I am trying to retrieve a string which is in whole of database without mentioning name of table and column, but my PHP code shows an error 我正在尝试检索整个数据库中的字符串,而没有提及表和列的名称,但是我的PHP代码显示错误

Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean 警告: mysql_fetch_row()期望参数1为资源,布尔值

Can anyone help me where am I going wrong? 谁能帮我我在哪里错了?

<?php

 // Setup the associative array for replacing the old string with new string
    $replace_array = "test";
    $HHHH;
    $ffff;
$mysql_link = mysql_connect( 'localhost:3306', 'tribhuvan', '123456' );
    if( ! $mysql_link) {
        die( 'Could not connect: ' . mysql_error() );
    }

    $mysql_db = mysql_select_db( 'a_t', $mysql_link );
    if(! $mysql_db ) {
        die( 'Can\'t select database: ' . mysql_error() );
    }



    // Traverse all tables
    $tables_query = 'SHOW TABLES';
    $tables_result = mysql_query( $tables_query );
    while( $tables_rows = mysql_fetch_row( $tables_result ) ) {
        foreach( $tables_rows as $table ) {

            // Traverse all columns
            $columns_query = 'SHOW COLUMNS FROM ' . $table;
            $columns_result = mysql_query( $columns_query );
            while( $columns_row = mysql_fetch_assoc( $columns_result ) ) {

                $column = $columns_row['Field'];
                $type = $columns_row['Type'];

                // Process only text-based columns
                if( strpos( $type, 'char' ) !== false || strpos( $type, 'text' ) !== false ) {
                    // Process all replacements for the specific column                    
                    $query = 'SELECT * From ' . $table . 
                            ' WHERE ' .  $column . ' = "'.$replace_array.'"';
                $HHHH = mysql_query($query);
                $ffff = mysql_fetch_row($HHHH);


                }
            }
        }
    }
    while( $queryValues = $ffff ) {
        foreach( $queryValues as $Values ) {
            echo $Values."<br/>";
            }}  

 mysql_free_result( $columns_result );
    mysql_free_result( $tables_result );
    mysql_close( $mysql_link );

    echo 'Done!';


?>

The result in $HHHH is obiously not valid. $ HHHH中的结果显然无效。 If you echo the $query, you can see what happens. 如果回显$ query,则可以看到会发生什么。 Probably something not right there. 可能那里不对。 But because we don't know the value of $table, I have no clue what could be wrong. 但是因为我们不知道$ table的值,所以我不知道可能出什么问题了。

Piece of advice: mysql is a little outdated. 一条建议:mysql有点过时了。 When you use MySQL with PHP the advice is MySQLi: read here: http://php.net/manual/en/function.mysql-fetch-row.php 当您将MySQL与PHP结合使用时,建议使用MySQLi:请在此处阅读: http : //php.net/manual/en/function.mysql-fetch-row.php

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM