草庐IT

php - 多行查询时 PDO 获取失败

我认为我对PDO的工作原理存在根本性的困惑。我有这个半复杂的多行查询,它向数据库中插入一行,但在完成后我需要插入的id(aid)。我有另一个函数的类似代码,它工作得很好,但这个函数没有返回任何东西。我得到了null的结果。当我在phpmyadmin中执行相同的操作时(用测试值替换参数),我得到了预期的aid结果。我做错了什么?functionadd_list_activity($activity,$lid,$db){$data=array();$query="INSERTINTOactivities(`name`)VALUES(:activity);SET@act_id=LAST_IN

php - CodeIgniter 默认的数据库驱动是 mysql 而不是 mysqli

根据php.net,mysql已被弃用,应改用mysqli。为什么“dbdriver”(在application/config/database.php中)默认设置为mysql而不是mysqli或更好的PDO? 最佳答案 您始终可以将其更改为mysqli,但在更改为mysqli之前,请在php.ini中启用mysqliAsdescribedinthisanswer. 关于php-CodeIgniter默认的数据库驱动是mysql而不是mysqli,我们在StackOverflow上找到一

php - 在 SELECT 语句中将数字放在引号周围有什么影响?

我的印象是数字是否被引用并不重要,但是当我注意到这个简单的查询时:SELECTidFROMtabletWHEREt.col=1234执行0.21s(其中id是一个BIGINT主键,col是一个varchar一个索引),我知道有些地方不对。摆弄了一段时间后,我尝试在数字周围加上引号:SELECTidFROMtabletWHEREt.col="1234"执行时间下降到0.046s。这是侥幸,还是是否引用数字有关系?编辑:另外,这对绑定(bind)参数的PDO查询有何影响?编辑2:显然查询计划不同:没有引号:+----+-------------+-------+------+-------

php - 了解 PDO/Prepared Statements 如何与多种数据库类型一起工作

我最近才开始使用PDO和PreparedStatements并了解它们如何正常工作,但是我现在想要支持多个数据库并且有几个关于如何工作的问题他们工作。据我了解,如果您在PHP中使用PDO,那么它将开箱即用地支持许多不同的数据库类型;但是我想了解这是如何工作的。例如,如果我这样做:$data=array('name'=>'Cathy','addr'=>'123fakest','city'=>'fakesville');$sql=$db->("INSERTINTOfolks(name,addr,city)value(:name,:addr,:city)");$sql->execute($d

php - Mysql PDO 执行总是返回TRUE

MysqlPDO执行总是返回true,即使我做了一个错误的查询:try{$sql=$this->db->prepare("INSERTINTOorders(total_price)VALUES('not_int');");$result=$sql->execute();//WHYTRUE??}catch(Exception$e){die("Ohnoes!There'sanerrorinthequery!");}在表中,“total_price”列的类型是INT。异常也没有捕获(PDO::ATTR_ERRMODE是PDO::ERRMODE_EXCEPTION)。在“total_price

php - PDO::beginTransaction() 是否导致表或行锁定直到 PDO::commit()?

我有一个PHP脚本,它使用准备好的语句在每个循环中执行大约1,000次插入和1,000次更新。只要需要完成工作,它就会一直循环,有时会持续数小时,并且会导致性能问题(包括死锁异常)。我正在尝试提高性能并正在研究批量插入和更新(尽管我仍在尝试弄清楚如何进行批量更新)。当PDO::beginTransaction()被调用时,它是否只是告诉PDO类不要将使用PDO::execute()执行的查询发送到数据库,还是发送查询然后锁定使用的表/行直到调用PDO::commit()?我问的原因是PHP脚本每次循环最多需要50秒,它会在该时间跨度内进行插入和更新查询,所以我想弄清楚是否可以简单地添加

php - 准备好的语句不返回任何行

简要版本(没有try和catches):$dbConnection=newPDO("mysql:host=$serverName;dbname=$dbName",$userName,$password,$dbOptions);$dbStatement=$dbConnection->prepare('SELECT*FROMbin_contentWHERELotId=":lot";');dbStatement->bindParam(':'.$key,$filter->$key);//$filter->lotcontains"A32"and$key="lot",//soI'massuming

php - 我是否在 Medoo Framework 中正确处理查询错误?

我正在使用Medoo框架来处理我的数据库查询。它基本上是一个PDO包装器,我没有在他们的文档中找到如何处理错误或检查结果,有时它返回空数组,有时返回FALSE有时返回0等等。因为我不明白如何处理错误,这就是我目前正在使用empty()做的事情,因为它可以处理FALSE、0和空数组,我认为这里没问题):在SELECT上(Medoo返回数组)//Sameas://SELECTusernameFROMaccountsWHEREid=$idANDsuspended=0$select=$database->select("accounts",["username"],["AND"=>["id"=

php - 如何在 mysql 中使用带有 OR 子句的 'INSERT INTO IGNORE' 或 'NOT EXISTS'

我有一个名为equipment的表,表架构如下+----+-----------------+-------------------+--+----------------------+|id|equipment|cat_id(Default:1)||is_active(Default:1)|+----+-----------------+-------------------+--+----------------------+|1|AirCompressor|1||1||2|PlateCompactor|1||1||3|Hammer|1||1||4|TNT|1||1|+----+-

php - PHP PDO 是否有内置方法以 ID 作为键返回结果作为数组?

假设我有一张tableid,f1,f210,'aaa','aaaaaa'20,'bbb','bbbbb'有没有办法使用PDO查询数据库并将结果作为数组获取:[10=>['aaa','aaaaa'],20=>['bbb','bbbbb']] 最佳答案 是的,这是可能的。这是使PDO如此出色的原因之一。你只需要PDO::FETCH_UNIQUE常量:$data=$pdo->query('SELECTid,f1,f2FROMt')->fetchAll(PDO::FETCH_UNIQUE);会给你想要的结果。您不妨浏览其他fetchmode