Php 比较两个不同表中的值,如果相等,则显示

Php 比较两个不同表中的值,如果相等,则显示,php,mysql,pdo,Php,Mysql,Pdo,我有一个名为$row['mykey']的变量,它是从表1上的一个查询中编译而来的 它显示在我的页面上,并且它确实显示了我正在寻找的值。现在我需要使用这个变量来设置我的新查询 在表2中,仅当结果与表2中的承包商锁定匹配时才显示结果$stmt1one可以很好地显示整个表,但我想使用$stmt2,但没有数据结果。谢谢你的帮助 try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); $

我有一个名为$row['mykey']的变量,它是从表1上的一个查询中编译而来的 它显示在我的页面上,并且它确实显示了我正在寻找的值。现在我需要使用这个变量来设置我的新查询 在表2中,仅当结果与表2中的承包商锁定匹配时才显示结果$stmt1one可以很好地显示整个表,但我想使用$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;
 }

您必须将
$row['mykey']
连接到
stmt2
,而不是直接包含它,因为它可能被解释为字符串

应该是这样的

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

为什么要运行两个查询?您可以执行单个联接查询,因为您的两个表显然有一个共享公共数据值的字段。这正是我脑海中的逻辑。在过去的四个小时里,我有太多的东西要学,我已经走到了死胡同。它似乎应该是如此简单!语句1和2中的表是否相同?如果在第二条语句的表名中遗漏了uu,那么表2!表2顺便说一下,我要比较的变量在各自的表中有不同的名称。不知道在使用Join时这是否会产生影响,这不重要。MySQL将对此进行补偿。kamal,我在进行更改时遇到以下错误,但rt133813是我正在寻找的值。错误:SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列“rt133813”加上,
rt133813
在这里是一个字符串,而不是OP中注释所述的整数。@RickyT I编辑了我的答案。“现在就看吧!”弗雷德二世——他在问题中把它写成了一个字符串。