如何在php PDO中加入两个不同的表

我有两个包含此内容的表:


Table users:


id                       1

username                 demoUser

pwd                      123

uid                      ghuyd3t2fgaggascxucxtu767fjc1g1e


Table all_product:


id                       1

p_name                   demoNmae

price                    demo

product_id               ghuyd3t2fgaggascxucxtu767fjc1g1e

我想加入他们并获取数据,这是我正在使用的代码:


$uid = $_GET['pid'];


$query = "SELECT users.*, all_product.* FROM users tableUsers JOIN all_product tableProduct ON tableUsers.uid = tableProduct.product_id WHERE tableProduct.product_id = tableUsers.$uid";


$statement = $con->prepare($query);

$statement->execute();

$result = $statement->fetchAll();


foreach($result as $row){

  echo $row['id'];

  echo $row['username'];

  echo $row['p_name'];

}

但我收到了这个错误:


致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[42S02]:未找到基表或视图:1051 未知表 'users' 在 /Applications/AMPPS/www/AppenceMedia/fetch_user.php:22 堆栈跟踪:#0 /Applications/AMPPS/www/AppenceMedia/fetch_user.php(22): PDOStatement->execute() #1 {main} 在第 22 行的 /Applications/AMPPS/www/AppenceMedia/fetch_user.php 中抛出


红颜莎娜
浏览 152回答 3
3回答

白衣染霜花

您正在使用 table 的别名,但在 select 中您使用的是 table 的名称..这会给您带来错误。同样在 where 条件绑定参数试试这个代码:    $uid = $_GET['pid'];    $query = "SELECT tableUsers.*, tableProduct.* FROM users tableUsers JOIN all_product tableProduct ON tableUsers.uid = tableProduct.product_id WHERE tableProduct.product_id = :product_id";    $statement = $con->prepare($query);    $statement->bindParam(':product_id', $uid, PDO::PARAM_STR);    $statement->execute();    $result = $statement->fetchAll();    foreach($result as $row){      echo $row['id'];      echo $row['username'];      echo $row['p_name'];    }

浮云间

我认为您的查询有点错误。你应该这样做:table_name as table_alias所以在你的情况下:$query = "SELECT users.*, tableProduct.* FROM tableUsers  as users JOIN all_product as tableProduct ON tableUsers.uid = tableProduct.product_id WHERE tableProduct.product_id = tableUsers.$uid";br

暮色呼如

确保你真的有一个名为 users 的表,如果你使用表别名,请尝试在任何地方使用这些$query = "SELECT tableUsers.*, tableProduct.* FROM users tableUsers JOIN all_product tableProduct ON tableUsers.uid = tableProduct.product_id WHERE tableProduct.product_id = tableUsers.$uid";无论如何你不应该在 sql 中使用 php var .. 你有 sqljection 的风险.. 尝试看看准备好的语句和绑定参数
打开App,查看更多内容
随时随地看视频慕课网APP