草庐IT

php 无法使用 empty() 返回 FATAL ERROR 检查 PDO 结果是否为空

我想检查我准备好的查询是否已返回空,而不必进入循环。这是我尝试使用的代码:if(empty($pQuery1->fetch(PDO::FETCH_ASSOC))){}当我尝试这个时,我得到了错误:fatalerror:无法在写入上下文中使用方法返回值无论我使用PDO->fetchALL还是PDO->fetch我都会收到同样的错误。我应该做些不同的事情吗? 最佳答案 您需要将结果分配给一个变量,然后对该变量调用empty()。这只是empty()函数的一个烦人的限制。见this问题。$results=$pQuery1->fetch(P

php - 使用 PDO 创建新的 SQLite 数据库

我想在我的下一个项目中提供设置功能,我想知道是否可以使用PDO从头开始​​创建SQLite3数据库,或者我只是坚持通过DSN连接到现有数据库?如果PDO不可行,有没有办法通过PHP创建新的数据库? 最佳答案 当您打开一个不存在的连接时,会创建一个新的sqlite数据库。您可以只检查文件是否存在,如果不存在,则只需创建一个新的数据库连接并插入表。 关于php-使用PDO创建新的SQLite数据库,我们在StackOverflow上找到一个类似的问题: https

php - PDO lastInsertId() 总是返回 0

我遇到了一个问题。我的框架在PHP5.3.0上工作得很好。我将我的PHP版本升级到PHP5.4.x,我的框架的某些部分开始出现一些问题。PHP版本升级后,PDOlastInsterId()总是返回0。我有一个名为id的自动递增字段。它正在毫无问题地将数据添加到数据库。出于某种原因,我一直将0作为最后一个插入ID。这是我的代码;databaseobjects.phppublicstaticfunctioncreate(){global$db;$attributes=self::sanitize(static::$fields);$sql="INSERTINTO".PREFIX.stati

php - pdo - 在非对象上调用成员函数 prepare()

这个问题在这里已经有了答案:Reference:Whatisvariablescope,whichvariablesareaccessiblefromwhereandwhatare"undefinedvariable"errors?(3个回答)CanImixMySQLAPIsinPHP?(4个回答)关闭5年前。此代码出错:Fatalerror:Calltoamemberfunctionprepare()onanon-objectinC:\Users\fel\VertrigoServ\www\login\validation.phponline42代码:functionrepetirDa

php - 在使用 PDO 的结果中使用列的值作为索引

我有一个名为“brands”的SQL表,其中包含列id、name、url。在那个表中我有这个数据集:1,Solidfloor,solidfloor;2,Quickstep,quickstep;4,Cleanfloor,cleanfloor;5,BlueDolphin,blue-dolphin;6,Krono,krono;8,Meister,meister;我现在正在获取它们并得到一个很好的数组作为返回,但是,我需要数组的索引不是递增的数字,而是该特定行的ID。我当然可以遍历结果集,但是有没有一种更简洁的方法呢? 最佳答案 虽然PHP

php - 简单的 PDO 包装器

我的web应用程序目前执行简单的查询:简单的CRUD操作、计数、...几个月前,有人在这里推荐我为此编写一个简单的PDO包装器(以避免每次执行查询时都编写try/catch、prepare()、execute()等)。显示了此示例方法(我做了一些更改,以便可以在我自己的项目中使用它):publicfunctionexecute(){$args=func_get_args();$query=array_shift($args);$result=false;try{$res=$this->pdo->prepare($query);$result=$res->execute($args);}

php - 解决 PHP5 的 PDO rowCount MySQL 问题

我最近开始使用PHP5开发一个新项目,并希望为此使用他们的PDO类。问题是MySQLPDO驱动程序不支持rowCount(),因此无法运行查询然后获取受影响的行数或返回的行数,就我而言,这是一个相当大的问题。我想知道以前是否有其他人处理过这个问题,以及您为解决这个问题做了什么。必须执行fetch()或fetchAll()来检查是否有任何行受到影响或返回,这对我来说似乎是一种黑客攻击,我宁愿只执行$stmt->numRows()或类似的操作。 最佳答案 您可以在原始SELECT查询之后立即发出SELECTFOUND_ROWS()查询以

php - 在 PHP 中设置 SQLite3 PDO 驱动程序

我正在“缓慢地”学习php101教程,已经到了第9个,我需要SQLite。我已经运行了SQLite3并且可以通过CLI访问,(参见一个小测试数据库的屏幕截图)但是当我在php101中尝试教程脚本时,我得到一个空白的浏览器屏幕。我现在知道这是因为SQLite3使用PDO(php101基于SQLitev2)。无法发布和成像,因此CLI显示:SQLite版本3.7.2输入“.help”获取说明输入以“;”结尾的SQL语句sqlite>从书中选择*;1|指环王|J.R.托尔金等等等等我没有倒退,而是试图弄清楚如何启用SQLite3PDO驱动程序(我知道它被命名为sqlite),但是那些迄今为止

php - PDO 异常问题 - 如何捕捉它们

我正在使用PDO为数据库重写网站界面。我曾经使用mysql扩展,但我从来没有为错误处理而烦恼,我有的几个错误处理程序基本上都是复制粘贴。现在我想正确地做到这一点。但是,我在捕获错误时遇到了问题(MySQL中的“重复条目”、“空值”等错误)。我的语句有多少需要放在tryblock中?所有的东西都应该在那里吗?我正在使用Include()连接到我的数据库(它有自己的错误处理),所以只有查询执行在这段代码中有错误。我不明白为什么它在执行以下代码时没有捕获到错误:try{$stmt=$db->prepare("INSERTINTOtbl_user(id,name,password,questi

php - 将命名参数与 PDO 一起用于 LIKE

我正在尝试使用LIKE在我的数据库中搜索name字段。如果我像这样“手工”制作SQL:$query="SELECT*\n"."FROM`help_article`\n"."WHERE`name`LIKE'%how%'\n"."";$sql=$db->prepare($query);$sql->setFetchMode(PDO::FETCH_ASSOC);$sql->execute();然后它会返回'how'的相关结果。然而,当我把它变成准备好的声明时:$query="SELECT*\n"."FROM`help_article`\n"."WHERE`name`LIKE'%:term%'\