2016-07-31 56 views
-2

所以我想從我的數據庫中的表中選擇數據,並希望在其他選擇查詢中使用該數據,但我嘗試但我的最後一個查詢變爲空,那麼什麼我錯了嗎?在查詢中使用查詢,但查詢變爲空

$query = "SELECT * FROM `DBovervieuw` WHERE owner =" . $owner; 
$result_set = mysqli_query($connection, $query); 
while($result = mysqli_fetch_array($result_set)) { 
    $stmt = "SELECT * FROM `card` WHERE DBid=" . $result['ID']; 
    $Finale_set = mysqli_query($connection, $Finale_set); 
    while($row = mysqli_fetch_ASSOC($Finale_set)) { 
     $data[] = $row; 
    } 

} 
echo json_encode($data); 

我會盡我的綁定變量後

+0

$ owner應該是什麼值 – jonju

+0

添加到jonju的評論:除非'$ owner'類似'column_name ='some_value'',這是不正確的語法。你可以'echo $ query'來檢查字符串是如何啓動的。 **編輯:**或甚至更好,使用[mysqli_error](http://php.net/manual/en/mysqli.error.php) – FirstOne

+0

它是一個4,所以一個INT,但是stmt失敗 –

回答

2

嗨這裏主要的事情,你缺少的是在第二WHERE(更新..其實這兩個查詢)

$query = "SELECT * FROM `DBovervieuw` WHERE " . $owner; 

$stmt = "SELECT * FROM `card` WHERE " . $result['ID']; 

你有沒有列名稱。那麼在哪裏?

$query = "SELECT * FROM `DBovervieuw` WHERE {insert column name here } = " . $owner; 

想想如果$owner是爲1的id值,那麼你有這個疑問..

$query = "SELECT * FROM `DBovervieuw` WHERE 1" 

這隻會返回表中的所有記錄。

也就是說一個簡單的加入可以優選在這裏,然後2查詢

$query = "SELECT 
       d.*, c.* 
      FROM 
       `DBovervieuw` AS d 
      JOIN 
       card AS c 
      ON 
       d.ID = c.DBid 
      WHERE d.owner = " . $owner; 

如果不知道列名這是我能做的最好的...本質,而不是第二個,你用這種關係作爲ON在加入。然後,您可以節省一大堆針對數據庫的查詢調用,並且使代碼更加簡便,因爲您掌握了所有的數據,並且可以避免第二個(嵌套的)while循環。

UPDATE 這也是一個問題。

$stmt = "SELECT * FROM `card` WHERE DBid=" . $result['ID']; 
    $Finale_set = mysqli_query($connection, $Finale_set); 

我想你想這不是:,

$stmt = "SELECT * FROM `card` WHERE DBid=" . $result['ID']; 
    $Finale_set = mysqli_query($connection, $stmt); //<----- 

通過,負責空查詢錯誤的方式,因爲你定義它之前使用$Finale_set。這將是NULL作爲你的SQL,從而給你空查詢錯誤。儘管這是錯誤的變量,所以我們只是使用正確的變量而不是定義它。

乾杯。

作爲一個側面說明,使用PDO當它代表PDOstatementhttp://php.net/manual/en/class.pdostatement.php所以約定明智的,我只想改變,要$sql$stmt變量,通常使用。但這只是一種最佳實踐。

+0

真的,對不起,我修復了錯誤,這是漫長的一天:D –

+0

@FirstOne - 如果'$ owner = 1',它確實會達到第二個。 'SELECT * FROM DBovervieuw WHERE 1'完全有效 – ArtisticPhoenix

+0

@FirstOne - 更新,我還沒有完成它。但感謝您的建議。 – ArtisticPhoenix

0

我認爲你有一個或兩行一定錯字:

這裏

$query = "SELECT * FROM DBovervieuw' WHERE " . $owner;

這裏

$stmt = "SELECT * FROM 'card' WHERE " . $result['ID']; 

嘗試這樣的事:

EDITED

$query = "SELECT * FROM DBovervieuw WHERE owner='".$owner."'"; 
$result_set = mysqli_query($connection, $query); 
while($result = mysqli_fetch_array($result_set)) { 
    $stmt = "SELECT * FROM `card` WHERE DBid=" . $result['ID']; 
    $Finale_set = mysqli_query($connection, $stmt); 
    while($row = mysqli_fetch_ASSOC($Finale_set)) { 
     $data[] = $row; 
    } 
} 
echo json_encode($data); 

通知的Owner_id & Card_id。這兩個是您想要搜索的對應表基的列名。您必須使用真正的列名稱更改這兩列。

+0

它給這個:空查詢39,(這是$ stmt) –

+0

您是否已替換您的專欄Owner_id&Card_id名稱?。顯示您的表格 – jonju

+0

是的,請參閱我的問題 –