热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从2个表中选择并搜索值-selectfrom2tablesandsearchforavalue

Ihavetwotables:我有两张桌子:bookingbookbookingbookborrowbookborrowbookandIneedtose

I have two tables:

我有两张桌子:

  1. bookingbook
  2. bookingbook
  3. borrowbook
  4. borrowbook

and I need to search the column bookId in each table if it's exist or not

如果它存在与否,我需要在每个表中搜索列bookId

My code

我的代码

prepare('SELECT
        a.bookId, b.bookId
        FROM
        bookingbook AS a
        INNER JOIN borrowbook AS b ON (a.bookId = b.bookId)
        WHERE a.bookId=? OR b.bookId=?
        ');
        $checkBorrow->bind_param('ii', $bokId, $bokId);
        $checkBorrow->execute();
        $res = $checkBorrow->get_result();
        $numRows = mysqli_num_rows($res);


        if ($numRows > 0) {
            $states = "Not Available";
        } elseif ($numRows <= 0) {
            $states = "Available";
        }
    }

?>

Result always comes Available even if it's not

结果总是可用即使不是

bookingbook Table
id - insId - bookId - studentId
bookingbook Table
id - insId - bookId - studentId - borrowDate - restoreDate

1 个解决方案

#1


1  

This is what you can do to get the number of rows returned,

这是你可以做的,以获得返回的行数,

while ($book = mysqli_fetch_assoc($results)) {
    $bokId = $book['id'];

    // Prepare query
    $checkBorrow = $db->prepare('SELECT * FROM bookingbook LEFT JOIN borrowbook ON 1=1 WHERE bookingbook.bookId=? OR borrowbook.bookId=? UNION SELECT * FROM bookingbook RIGHT JOIN borrowbook ON 1=1 WHERE bookingbook.bookId=? OR borrowbook.bookId=?');

    // Binds variables to prepared statement
    $checkBorrow->bind_param('iiii', $bokId, $bokId, $bokId, $bokId);

    // Execute query
    $checkBorrow->execute();

    // Store the result (to get properties)
    $checkBorrow->store_result();

    // Get the number of rows
    $numRows = $checkBorrow->num_rows;

    if ($numRows) {
        $states = "Not available";
    } else{
        $states = "Available";
    }

    // free results
    $checkBorrow->free_result();

    // close statement
    $checkBorrow->close();
}

Caution: You're mixing the procedural and object oriented style of mysqli. In the while loop condition you're using procedural style, whereas inside the while loop block you're using object oriented style of mysqli. Please pick one style and stick to it.

警告:你正在混合mysqli的程序和面向对象的风格。在while循环条件中,您使用的是过程样式,而在while循环块中,您使用的是面向对象的mysqli样式。请选择一种风格并坚持下去。

Edited:

编辑:

Updated SQL query

更新了SQL查询

// Prepare query
$checkBorrow = $db->prepare('
SELECT * FROM bookingbook LEFT JOIN borrowbook ON 1=1 WHERE bookingbook.bookId=? OR borrowbook.bookId=? 
UNION 
SELECT * FROM bookingbook RIGHT JOIN borrowbook ON 1=1 WHERE bookingbook.bookId=? OR borrowbook.bookId=?');

// Binds variables to prepared statement
$checkBorrow->bind_param('iiii', $bokId, $bokId, $bokId, $bokId);

推荐阅读
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 构建Python自助式数据查询系统
    在现代数据密集型环境中,业务团队频繁需要从数据库中提取特定信息。为了提高效率并减少IT部门的工作负担,本文探讨了一种利用Python语言实现的自助数据查询工具的设计与实现。 ... [详细]
  • 本文详细介绍了在MyBatis框架中如何通过#和$两种方式来传递SQL查询参数。使用#方式可以提高执行效率,而使用$则有助于在复杂SQL语句中更好地查看日志。此外,文章还探讨了不同场景下的参数传递方法,包括实体对象、基本数据类型以及混合参数的使用。 ... [详细]
  • Docker基础入门与环境配置指南
    本文介绍了Docker——一款用Go语言编写的开源应用程序容器引擎。通过Docker,用户能够将应用及其依赖打包进容器内,实现高效、轻量级的虚拟化。容器之间采用沙箱机制,确保彼此隔离且资源消耗低。 ... [详细]
  • Java连接MySQL数据库的方法及测试示例
    本文详细介绍了如何安装MySQL数据库,并通过Java编程语言实现与MySQL数据库的连接,包括环境搭建、数据库创建以及简单的查询操作。 ... [详细]
  • 本文详细介绍了如何使用C#实现不同类型的系统服务账户(如Windows服务、计划任务和IIS应用池)的密码重置方法。 ... [详细]
  • 为什么会崩溃? ... [详细]
  • 本文将详细探讨MySQL中较为特殊的三种数据类型:SQLTEXT、DATE以及SET,包括它们的基本用法、适用场景及一些高级特性。 ... [详细]
  • 华为云openEuler环境下的Web应用部署实践
    本文详细记录了在华为云openEuler系统上进行Web应用部署的具体步骤,包括配置yum源、安装Apache、MariaDB、PHP及其相关组件,并完成WordPress的安装与配置过程。 ... [详细]
  • 本文探讨了Android系统中联系人数据库的设计,特别是AbstractContactsProvider类的作用与实现。文章提供了对源代码的详细分析,并解释了该类如何支持跨数据库操作及事务处理。源代码可从官方Android网站下载。 ... [详细]
  • 在AngularJS中,有时需要在表单内包含某些控件,但又不希望这些控件导致表单变为脏状态。例如,当用户对表单进行修改后,表单的$dirty属性将变为true,触发保存对话框。然而,对于一些导航或辅助功能控件,我们可能并不希望它们触发这种行为。 ... [详细]
  • 我在尝试将组合框转换为具有自动完成功能时遇到了一个问题,即页面上的列表框也被转换成了自动完成下拉框,而不是保持原有的多选列表框形式。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 本文深入探讨了MySQL中的高级特性,包括索引机制、锁的使用及管理、以及如何利用慢查询日志优化性能。适合有一定MySQL基础的读者进一步提升技能。 ... [详细]
  • iOS如何实现手势
    这篇文章主要为大家展示了“iOS如何实现手势”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“iOS ... [详细]
author-avatar
郑子宜4262
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有