gpt4 book ai didi

php - mysqli bind_result 仅适用于 INT 类型的列

转载 作者:行者123 更新时间:2023-11-30 23:26:34 25 4
gpt4 key购买 nike

我有一个 mySQL 表定义为:

CREATE TABLE IF NOT EXISTS `coupons` (
`coupon_id` int(11) NOT NULL auto_increment,
`coupon_code` varchar(50) NOT NULL,
`coupon_expiration_date` date NOT NULL,
`coupon_discount` decimal(10,2) NOT NULL,
`coupon_created_date` date NOT NULL,
PRIMARY KEY (`coupon_id`)
)

此表中的一项如下:

INSERT INTO `coupons` (`coupon_id`, `coupon_code`, `coupon_expiration_date`, `coupon_discount`, `coupon_created_date`) VALUES (1, 'test', '2012-11-30', '11.00', '2012-10-22');

当尝试使用以下 PHP 代码查询此表时:

$strSelectCoupons = "SELECT coupon_id FROM coupons";
if($stmtSelectCoupons = $mysqlConn->prepare($strSelectCoupons))
{
$stmtSelectCoupons->execute();
$stmtSelectCoupons->bind_result($iCouponId);

while($stmtSelectCoupons->fetch())
{
echo $iCouponId;
}
}
else
{
echo "Prepared statement error: " . $mysqlConn->error;
}

正如预期的那样,我们看到屏幕上打印了一个“1”。

但是,如果我们尝试执行以下 PHP 代码:

$strSelectCoupons = "SELECT coupon_id, coupon_code FROM coupons";
if($stmtSelectCoupons = $mysqlConn->prepare($strSelectCoupons))
{
$stmtSelectCoupons->execute();
$stmtSelectCoupons->bind_result($iCouponId, $strCouponCode);

while($stmtSelectCoupons->fetch())
{
echo $iCouponId . "<br />";
echo $strCouponCode . "<br />";
}
}
else
{
echo "Prepared statement error: " . $mysqlConn->error;
}

不显示结果,不打印错误,不记录错误,页面的其余部分不呈现。

事实上,只有当返回 ONLY coupon_id 时,这才真正按预期工作。例如,如果我们将 select 语句更改为仅返回 coupon_code,这将再次导致页面崩溃。

关于导致失败的原因有什么想法吗?

Apache 版本:2.2.2

PHP 版本:5.3.14

mySQL 版本:5.0.95-社区

编辑:

在进一步调查中,bind_result 仅适用于 INT 类型的列,并且在尝试绑定(bind)其他类型的任何列时失败。

最佳答案

关于 mysqli_stmt_bind_result() 的评论指向 a bug in the MySQL Client Library这会导致大数据列崩溃。

据报道,mysqlnd 和 MySQL 的 Connector/C 没有出现此问题,或者如果可能,您可以调用 mysqli_stmt_store_result()在调用 mysqli_stmt_bind_result() 之前。

关于php - mysqli bind_result 仅适用于 INT 类型的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13014971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com