2016-08-19 39 views
-1

我有一個名爲$ row ['mykey']的變量,它是從表1的查詢中生成的,我將 轉換爲我的頁面,並顯示值我在找。現在我需要使用這個變量來在表2中設置我的新查詢 ,以便僅當它與表2中的contractor_lock匹配時才顯示結果。 $ stmt1可以正常顯示整個表格,但我想使用$ stmt2但沒有獲得數據結果。謝謝你的幫助!比較兩個不同表中的值,如果相等,則顯示

try { 
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 


$stmt1 = $conn->prepare("SELECT client_id, companyname, contact, contractor_lock FROM table_two"); 


$stmt2 = $conn->prepare("SELECT client_id, companyname, contact, contractor_lock FROM table two WHERE contractor_lock = $row['mykey']"); 

$stmt->execute(); 
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
    echo $v; 
} 
} 

catch(PDOException $e) { 
echo "Error: " . $e->getMessage(); 
} 
$conn = null; 
} 
+1

你爲什麼運行兩個查詢?你可以做一個JOINed查詢,因爲你的兩個表顯然有一個共享公用數據值的字段。 –

+0

在此新增,並且從未使用過連接。這只是我腦海中的邏輯。我有很多東西要學習 –

+0

最近四個小時的研究,並走到了我的死衚衕。它看起來應該是如此簡單! –

回答

0

你必須串聯$row['mykey']stmt2,而不是直接包含它,因爲它可能被解釋爲一個字符串。

它應該是這樣的

$stmt2 = $conn->prepare("SELECT client_id, companyname, contact, contractor_lock FROM table two WHERE contractor_lock = ?"); 
$stmt2->execute($row['mykey']); 
+0

這應該不重要。 MySQL會彌補它。 –

+0

kamal,進行更改時出現以下錯誤,但rt133813是我正在查找的值。錯誤:SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'rt133813' –

+0

另外,'rt133813'是一個字符串,並非來自OP的評論所述的整數。 –

相關問題