PHP的bool值

PHP中,当其他类型变量转换为 boolean 时,以下值被认为是 FALSE:

  • 布尔值 FALSE 自身;
  • 整型值 0 (零);
  • 浮点型值 0.0 (零);
  • 空字符串(""), 以及 字符串("0");
  • 不包括任何元素的数组;
  • 不包括任何成员变量的对象(仅PHP 4.0 适用);
  • 特殊类型 NULL (包括尚未设定的变量);
  • 从没有任何标记(tags)的XML文档生成的SimpleXML 对象;

其它所有值都被认为是 TRUE(包括任何资源)。

注意: -1 和其它非零值(不论正负)一样,被认为是 TRUE!

<?php <br />var_dump((bool) ""); // bool(false)
var_dump((bool) 1); // bool(true)
var_dump((bool) -2); // bool(true)
var_dump((bool) "foo"); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) "false"); // bool(true)
?>

<think> 我们被要求回答:PHP中用于数据库操作并返回布尔的函数有哪些? 根据提供的引用,我们可以看到: 引用[2]提到了一个函数:oci_execute(),它返回布尔,用于执行一条之前被解析过的SQL语句。 引用[4]中虽然提到了SELECT语句,但并没有直接提到返回布尔的函数。 然而,我们知道PHP中不同的数据库扩展提供了不同的函数。常见的数据库操作扩展有:MySQLi, PDO, 以及Oracle(如引用[2]中的oci_execute)。 根据引用[1],我们知道布尔PHP中的意义,所以返回布尔的函数通常用于表示操作是否成功。 除了引用[2]中提到的oci_execute(),我们还可以想到: 1. MySQLi扩展中,例如:mysqli_query()在执行某些类型的SQL语句(如INSERT, UPDATE, DELETE)时,如果执行成功则返回true,失败则返回false。但注意,对于SELECT语句,它返回的是结果集对象,而不是布尔。 2. PDO扩展中,PDO::exec()方法执行一条SQL语句并返回受影响的行数,但它返回的是整数,不是布尔。而PDO::prepare()返回的是PDOStatement对象,执行则使用PDOStatement::execute(),该方法返回布尔。 因此,我们需要根据不同的扩展来列举: 一、MySQLi扩展(针对MySQL数据库): - mysqli_query():当执行非查询语句(如INSERT, UPDATE, DELETE)时,成功返回true,失败返回false。但如果是查询语句(如SELECT),成功返回结果集对象,失败返回false(所以失败时返回布尔false,成功时返回的是对象,不是布尔true)。但严格来说,它并不总是返回布尔。 - 另外,像mysqli_autocommit(), mysqli_commit(), mysqli_rollback()等事务相关函数返回布尔。 二、PDO扩展(支持多种数据库): - PDO::exec():执行一条SQL语句,并返回受影响的行数(整数)。如果执行失败,返回false(布尔)。所以它可能返回整数或false。 - PDO::prepare():返回PDOStatement对象或者false(失败时)。 - PDOStatement::execute():返回布尔,表示执行成功或失败。 三、Oracle扩展(OCI8): - oci_execute():如引用[2]所述,返回布尔。 四、其他扩展: 例如,PostgreSQL扩展中的pg_query(),对于非查询语句,成功返回true,失败返回false;而对于查询语句,成功返回资源,失败返回false。 因此,严格来说,我们关注的是那些执行数据库操作(如执行SQL语句)并且明确返回布尔(表示操作是否成功)的函数。 综上所述,我们可以列举如下: 1. oci_execute() - 用于Oracle数据库,执行SQL语句,返回布尔[^2]。 2. PDOStatement::execute() - 用于PDO,执行预处理语句,返回布尔。 3. 在MySQLi中,执行非查询语句的mysqli_query()在失败时返回false,但成功时并不返回布尔true,而是返回true(对于非查询)或结果集对象(对于查询)。因此,我们通常这样使用:当mysqli_query()返回false时表示失败,而其他表示成功。但严格来说,它并不总是返回布尔。不过,我们可以认为它在失败时返回布尔false。类似地,以下函数返回布尔: - mysqli_autocommit() - mysqli_commit() - mysqli_rollback() - mysqli_real_connect() - 等等。 所以,为了准确回答,我们列举一些常见的返回布尔的数据库操作函数: - oci_execute():执行OCI8语句(Oracle)[^2]。 - PDOStatement::execute():执行PDO预处理语句。 - mysqli_commit():提交MySQLi事务。 - mysqli_rollback():回滚MySQLi事务。 - mysqli_autocommit():设置MySQLi自动提交模式。 - mysqli_close():关闭连接(返回布尔,但通常我们忽略,因为它很少失败)。 注意:像mysqli_query()和PDO::exec()这样的函数,它们并不总是返回布尔(成功时可能返回非布尔,失败时返回false),因此严格来说,它们不是总返回布尔,但失败时返回布尔false。 根据问题,我们只关注那些函数签名中返回类型为布尔的函数。因此,我们重点列出那些明确返回布尔的函数。 总结:PHP中用于数据库操作并返回布尔的函数有: 1. oci_execute() - Oracle扩展[^2] 2. PDOStatement::execute() - PDO扩展 3. MySQLi扩展中的事务相关函数(如mysqli_commit, mysqli_rollback, mysqli_autocommit等) 另外,请注意,不同的数据库扩展有不同的函数,所以具体使用哪个函数取决于你使用的数据库和扩展。 为了更全面,我们还可以提到: - sqlsrv_execute()(用于SQL Server)返回布尔。 但考虑到引用中只提到了OCI8,我们主要根据引用和常见扩展来回答。 因此,我们可以这样回答: 在PHP中,用于数据库操作并返回布尔(即表示操作成功与否)的函数包括但不限于: - Oracle扩展(OCI8)中的oci_execute()函数,它用于执行一条之前解析过的SQL语句,成功返回true,失败返回false[^2]。 - PDO扩展中的PDOStatement::execute()方法,用于执行一条预处理语句,成功返回true,失败返回false。 - MySQLi扩展中的事务相关函数,如: * mysqli_commit() - 提交当前事务 * mysqli_rollback() - 回滚当前事务 * mysqli_autocommit() - 开启或关闭自动提交 这些函数在成功时返回true,失败时返回false。 此外,其他数据库扩展中也有类似的函数。 注意:像mysqli_query()这样的函数,虽然它在执行非查询语句时成功返回true(严格来说,对于INSERT/UPDATE/DELETE,成功返回true,但SELECT返回结果集对象),而失败返回false,所以它有时返回布尔,有时返回对象。因此,它不完全符合“总是返回布尔”的条件。 所以,我们只列举那些明确返回布尔的函数。 最后,根据要求,生成相关问题。 </think>在PHP中,用于数据库操作并返回布尔的函数主要有以下几种,主要涉及SQL执行、事务控制和连接管理: ### 一、核心函数列表 1. **`oci_execute()`** - Oracle数据库 执行已解析的SQL语句,返回布尔表示成功/失败。 示例: ```php $stmt = oci_parse($conn, "UPDATE users SET active=1"); $result = oci_execute($stmt); // 返回 true/false ``` 支持事务模式参数(如`OCI_COMMIT_ON_SUCCESS`)[^2]。 2. **`PDO::exec()`** - PDO扩展(多数据库通用) 执行无返回结果的SQL(如INSERT/UPDATE),返回受影响行数(整数)或失败时返回`false`(布尔)。 ```php $pdo = new PDO("mysql:host=localhost;dbname=test", "user", "pass"); $result = $pdo->exec("DELETE FROM logs"); // 整数或false ``` 3. **`mysqli_query()`** - MySQLi扩展(MySQL专用) 执行SQL语句,对非查询语句(如INSERT)返回`true`,失败返回`false`;查询语句返回结果集对象。 ```php $conn = mysqli_connect("localhost", "user", "pass", "db"); $result = mysqli_query($conn, "ALTER TABLE items ADD COLUMN stock INT"); // true/false ``` --- ### 二、事务相关函数(均返回布尔) | 扩展 | 函数 | 作用 | |-----------|---------------------|--------------------------| | **MySQLi**| `mysqli_commit()` | 提交事务 | | | `mysqli_rollback()` | 回滚事务 | | | `mysqli_autocommit()`| 设置自动提交模式 | | **PDO** | `PDO::commit()` | 提交事务 | | | `PDO::rollBack()` | 回滚事务 | | **OCI8** | `oci_commit()` | 提交Oracle事务[^2] | | | `oci_rollback()` | 回滚Oracle事务 | --- ### 三、其他返回布尔的操作 - **`pg_query()`** - PostgreSQL扩展 执行查询,失败时返回`false`,成功返回结果资源。 - **`sqlsrv_execute()`** - SQL Server扩展 执行预处理语句,返回布尔。 - **连接管理**: `mysqli_close()`、`pg_close()`等关闭连接的函数通常返回布尔表示操作结果。 --- ### 关键注意事项 1. 布尔判断需严格: ```php // 正确:显式检查false(因成功时可能返回非布尔) if ($result === false) { die("执行失败"); } ``` 2. 错误处理建议: ```php // PDO示例:启用异常模式避免布尔判断遗漏 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值