为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
红颜莎娜 2021-10-08 21:31:45
我有两个包含此内容的表:Table users:id                       1username                 demoUserpwd                      123uid                      ghuyd3t2fgaggascxucxtu767fjc1g1eTable all_product:id                       1p_name                   demoNmaeprice                    demoproduct_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 中抛出
查看完整描述

3 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

您正在使用 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'];

    }


查看完整回答
反对 回复 2021-10-08
?
浮云间

TA贡献1829条经验 获得超4个赞

我认为您的查询有点错误。你应该这样做:

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


查看完整回答
反对 回复 2021-10-08
?
暮色呼如

TA贡献1853条经验 获得超9个赞

确保你真的有一个名为 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 的风险.. 尝试看看准备好的语句和绑定参数


查看完整回答
反对 回复 2021-10-08
  • 3 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信