我已经能够使用mysqli(在PHP中)执行多个准备好的语句.
但是,由于某些原因,当我尝试运行“ SELECT”命令时,准备好的语句始终会遇到错误.
例如,以下行将成功:
$stmt=$mysqli->prepare("UPDATE events SET category='m' WHERE id=(?)");
但是,以下行将失败:
$stmt=$mysqli->prepare("SELECT * FROM events WHERE id=(?)");
当我说失败时,我的意思是接下来的三行将为UPDATE命令返回1(指示一行已更改)…
$stmt->bind_param('i',$id);
$stmt->execute();
echo $stmt->affected_rows;
接下来的三行将为SELECT返回0:
$stmt->bind_param('i',$id);
$stmt->execute();
echo $stmt->num_rows;
作为记录,我知道对于单个SELECT而言,准备好的语句效率不高-这个问题主要是学术性的.
解决方法:
此函数(affected_rows)仅适用于更新表的查询.为了从SELECT查询中获取行数,请改用mysqli_stmt_num_rows().
http://php.net/manual/en/mysqli-stmt.affected-rows.php
确保先存储结果!!
$stmt->execute();
/* store result */
$stmt->store_result();
printf("Number of rows: %d.\n", $stmt->num_rows);
标签:mysqli,mysql,php 来源: https://codeday.me/bug/20191121/2051426.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。