【发布时间】:2014-12-17 21:18:12
【问题描述】:
我正在尝试检索整个数据库中的字符串,但没有提及表和列的名称,但我的 PHP 代码显示错误
警告:
mysql_fetch_row()期望参数 1 是资源,布尔值
谁能帮我看看哪里出错了?
<?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!';
?>
【问题讨论】:
-
我很确定
SHOW TABLES将返回 true/false 而不是查询句柄,因为您没有执行SELECT命令。尝试从information_schema.tables获取带有SELECT的表名。 -
$query 给了我动态选择脚本示例:( 1.SELECT * 从艺术品 WHERE ImageName = "test" 2.SELECT * 从艺术品 WHERE Title = "test" 3.SELECT * 从艺术品 WHERE大小 = "测试")