php+mysql+获取多行,php – MySQLi绑定结果并获取多行

我正在尝试使用MySQLi和bind / fetch循环一组结果.

static function getConnection()

{

if (!isset(self::$db_conn))

{

self::$db_conn = new mysqli(self::$DBSERVER,self::$DBUSER,self::$DBPASS, ModelBase::$DBNAME) or die(mysql_error(0)." Error handling database connection. ");

}

return self::$db_conn;

}

以上是getConnection()函数.它位于此类继承的ModelBase类中.

$term = "%".$term."%";

$con = ModelBase::getConnection();

$sql = "SELECT name FROM cities WHERE name LIKE ? LIMIT ?";

$query = $con->prepare($sql) or die("Error preparing sql in City ".parent::$db_conn->error);

$query->bind_param("si", $term, $limit) or die("Error binding params in City ".parent::$db_conn->error);

$query->execute() or die("Error executing query in City");

$tmp = "";

$query->bind_result($tmp);

while($query->fetch());

{

error_log($tmp);

echo($tmp."\n");

}

$query->close();

但是,我得到的只是最后一个结果而且只有一次.应该有多个结果,当我在phpMyAdmin中检查以下查询时,或者在提示符下我得到多行.

SELECT name FROM cities WHERE name LIKE %d% LIMIT 150

如果我改变,则不会出现此问题

$query->bind_result($tmp);

$query->bind_result(&$tmp);

语法还有其他问题吗?

有更简单的方法吗?也许是一种获取对象的方法?

解决方法:

在while语句的末尾有一个分号:

while($query->fetch());

(当然,如果没有在每一圈的大括号之间运行代码,那么会对$query-> fetch()进行求值,直到它为止.

标签:php,mysqli,prepared-statement

来源: https://codeday.me/bug/20190621/1258984.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值