很多站长朋友们都不太清楚phpfetchone,今天小编就来给大家整理phpfetchone,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 Warning: mysqli_query() expects parameter 1 to be mysqli怎么解决啊 2、 PHP 中Fetch,FetchAll从数据库中取数据,遍历出来的都是字符串吗 3、 php图片分页 4、 zend framework1.8.4中如何输出SQL语句 - PHP框架开发 Warning: mysqli_query() expects parameter 1 to be mysqli怎么解决啊即然你是用类封装mysql操作,那应该把所有操作都放到类中!
如果实在要这么做,
那给你改一下试试行不行
class
mysqlis{
private
$host;
private
$name;
private
$pass;
private
$sqlname;
public
$Conn;
function
__construct($host,$name,$password,$sqlname){
$this->host=$host;
$this->name=$name;
$this->pass=$pass;
$this->sqlname=$sqlname;
$this->connect();
}
function
connect(){
$this
->
Conn
=
mysqli_connect($this->host,$this->name,$this->pass,$this->sqlname)
or
die("数据库连接错误");
}
}
$mysql=new
mysqlis("localhost","dafddf","dfdfgfg","test");
$sql="select
*
from
archives
where
title
like
'%说说%'";
$query=mysqli_query($mysql
->
Conn,
$sql);?>你这出现错误,
是因为,
msyqli_query()函数的第一个参数,
必须是msyqli_connect()函数操作成功后返回的数据库连接标识,
很明显,
你这个$msyql只是实例化后的class
mysqlis这个类本身,
并不是数据库连接返回的标识,
那当然无法query查询!
mysqli比不msyql函数,
mysql函数是可以省略数据库连接标识的,
默认为上一个连接,
而mysqli函数不行,
必须提供这个参数!
PHP 中Fetch,FetchAll从数据库中取数据,遍历出来的都是字符串吗举例,首先看了pymysql里面的cursor类,关于execute、fetchone和fetchall定义如下:
#调用self._query方法进行查询
def execute(self, query, args=None):
"""Execute a query
:param str query: Query to execute.
:param args: parameters used with query. (optional)
:type args: tuple, list or dict
:return: Number of affected rows
:rtype: int
If args is a list or tuple, %s can be used as a placeholder in the query.
If args is a dict, %(name)s can be used as a placeholder in the query.
"""
while self.nextset():
pass
query = self.mogrify(query, args)
result = self._query(query)
self._executed = query
return result
#调用_do_get_result获取查询结果
def _query(self, q):
conn = self._get_db()
self._last_executed = q
self._clear_result()
conn.query(q)
self._do_get_result()
return self.rowcount
#这里获取结果
def _do_get_result(self):
conn = self._get_db()
self._result = result = conn._result
self.rowcount = result.affected_rows
self.description = result.description
self.lastrowid = result.insert_id
self._rows = result.rows
self._warnings_handled = False
if not self._defer_warnings:
self._show_warnings()
其实看到这里代码逻辑已经很清楚了,在调用cursor.execute执行SQL的时候,就将MySQL查询的结果放到result这个变量里了,也就是说结果集放到了客户端的内存变量里,那么获取数据的方式也就是从这个内存变量里去获取数据,只是获取的行为有所不同而已了。
def fetchone(self):
"""Fetch the next row"""
self._check_executed()
if self._rows is None or self.rownumber >= len(self._rows):
return None
result = self._rows[self.rownumber]
self.rownumber += 1
return result
def fetchmany(self, size=None):
"""Fetch several rows"""
self._check_executed()
if self._rows is None:
return ()
end = self.rownumber + (size or self.arraysize)
result = self._rows[self.rownumber:end]
self.rownumber = min(end, len(self._rows))
return result
def fetchall(self):
"""Fetch all the rows"""
self._check_executed()
if self._rows is None:
return ()
if self.rownumber:
result = self._rows[self.rownumber:]
else:
result = self._rows
self.rownumber = len(self._rows)
return result
口说无凭,我们直接通过Wireshark抓包来证明一下,首先我在本地执行脚本如下,然后我监听本地的网卡流量
import pymysql
conn = pymysql.connect(host='xxx', port=3306,
user='xucl', password='xuclxucl', database='xucl')
cursor = conn.cursor()
cursor.execute("select * from t")
注意,我这里并没有执行fetch操作,如果监听到的包里面包含了结果,那么就证明我们前面的分析是正确的,话不多说开始实验,Wireshark抓包如下:
果然跟我们之前的预测是一致的,即使没有进行fetch操作,MySQL也将结果集发送到客户端了。另外关于结果集发送,可以参考我另外一篇文章:《由一个抓瞎的SQL引申出去》
结论:
客户端执行SQL的时候,MySQL一次性将结果集发送给了客户端
客户端接收到结果集以后存储本地内存变量中
fetch结果只是从这个本地变量中获取,fetchone/fetchmany/fetchall只是获取行为的不通,因此对于MySQL来说并没有什么不通的。
php图片分页兄弟,你用的什么分页类啊,没有看到你的当前分页页码怎么传入呢。你在后面的页不就无法增长啊。
只能在第一页上面操作啊
针对你提出的想要每页显示9个图片,
你直接查询出9条记录,
每行3个,简单的方法,就是在你循环显示的时候,用当前记录数(也就是当前记录是这9个中的第几个)与3求余,如果没有余数,说明是3的倍数了。这个时候,加一个换行符,就行了。
zend framework1.8.4中如何输出SQL语句 - PHP框架开发亲,1.8.4很老了,最新的可能是1.12.x吧(不考虑zf2),建议你升级到1.11或者1.12,应该不需要改动你的源码。
对于你的问题,你这种用法是不需要输出sql的,因为这条sql是你手动定义的,所以你完全可以自己输出它。例如
$sql = "select count(*) from gs_user where username = '{$userName}' AND password = '{$password}'";
echo $sql;
print_r($this->db->fetchOne($sql));
楼上的解答其实也是正确的,不过代码不大完整,给你个例子
$select = new Zend_Db_Table_Select()
$select->from('gs_users', array(new Zend_Db_Expr('COUNT(*)');
$select->where('username', $userName)->where('password', $password);
try{
$row = $select->query(PDO::FETCH_ASSOC)->fetch();
} catch(Exception $e) {
die($select);
}
关于Zend Framework,这里提供了一个可用的项目源码,也许你给你点帮助。源码下载与配置运行
关于phpfetchone的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于包含phpfetchone的词条的详细内容...