2016-12-11 102 views
0

我想從整個MySQL數據庫中搜索特定的字符串,而不是僅從數據庫的單個表中獲取數據,並在我的Android應用程序中將數據作爲JSON對象獲取。如何在整個MySQL數據庫中搜索字符串?

這裏是我的PHP文件

<?php 

error_reporting(E_ALL^E_DEPRECATED); 


$con = require("connection.php"); 


if (isset($_POST['submit'])) 
{ 

$username = $_POST['username']; 

$password = $_POST['password']; 

} 


$statement = mysqli_prepare($con, "SELECT * FROM user WHERE username = ? AND password = ?"); 

mysqli_stmt_bind_param($statement,"ss",$username,$password); 
mysqli_stmt_execute($statement); 
mysqli_store_result($statement); 
mysqli_stmt_bind_result($statement,$id,$name,$phone,$email,$username, $password); 

$user = array(); 

while(mysqli_stmt_fetch($statement)){ 
    $user[name]= $name; 

    $user[phone]= $phone; 

    $user[email]= $email; 

    $user[username]= $username; 

    $user[password]= $password; 

} 

echo json_encode($user); 
mysqli_stmt_close($statement); 

mysqli_close($con); 

? 

但我不想只在用戶表進行搜索,而不是我想在整個數據庫進行搜索。請幫忙。

+2

所以指定要搜索的每個表和列 –

+1

這似乎是一個登錄腳本。爲什麼要在用戶表外搜索用戶名和密碼? – Shadow

+2

1.使用關聯數組''user ['name']'時,應該添加引號。 2.你是否將密碼存儲在數據庫中作爲非哈希純文本字符串? _使用PHP的['password_hash()'](http://php.net/manual/en/function.password-hash.php)和['password_verify()'](http:/改爲/php.net/manual/en/function.password-verify.php)。如果您運行的PHP版本低於5.5,則可以使用[password_compat庫](https://github.com/ircmaxell/password_compat)來獲得相同的功能。 –

回答

1

從整個數據庫沒有直接的SELECT方法。相反,您可以從information_schema中獲取所有表格,如this。 然後你可以遍歷所有的表格,並在all columns中搜索諸如eg等comlumn類型。 varchar,文本或其他取決於您的需求。

+0

給予客戶權限來搜索information_schema?這聽起來像一個可怕的想法。你在某個地方犯了錯嗎? – Takarii

+0

感謝Laris Nielsen的回答,我找到了另一種方式來做到這一點。從SQL查詢我會選擇我需要的所有表... –

+0

@Takarii,:-S也許! :-)我習慣使用虛擬機,因此實際上只有一個用戶可以訪問數據庫。 –

相關問題