草庐IT

php - 如何引发 PDOException?

这段代码工作正常,但我想处理exception如果有任何问题,所以我故意在query中犯了一个语法错误但没有任何反应。下面是代码try{$sql="INSERTINTOjournals(topic,author,)VALUES('$topic','$authors',')";echo"1st";$lecturers_db->query($sql);echo"second";}catch(PDOException$e){echo$e->getMessage();echo$msg="Error!";}没有明显的语法错误,代码工作正常,但有语法错误,没有任何反应,tryblock中的所有代码

PHP PDO插入方法

我正在使用PHP类方法使用PDO将表单值插入到mysql数据库中。下面概述了这个想法,但我不知道如何传入该方法的第四个参数。谁能解释一下如何做到这一点?谢谢!DbHost;dbname=$this->DbName",$this->DbUser,$this->DbPass,array(PDO::ATTR_PERSISTENT=>true));$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);$dbh->exec("SETCHARACTERSETutf8");$sth=$dbh->prepare("INSERTINTO

php - PDO:PDO::MYSQL_ATTR_INIT_COMMAND 中的多个命令

我正在使用这个PDO连接:try{$db=newPDO("mysql:host=localhost;dbname=...","dbu...","pass",array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SETlc_time_names='de_DE'"));}catch(PDOException$e){die("Error!");}现在我想添加另一个初始化命令:array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SETlc_time_names='de_DE'",PDO::MYSQL_ATTR_INIT_COMMAND=>"SETNAM

php - 当您只进行一次选择时,使用准备好的 Select 语句是否更好?

我目前正在使用PDO在PHP中编写一个CRUD类。我喜欢准备语句提供的安全性,但我听说它们还可以防止像mysql这样的数据库使用queryCache。当您一次只进行一个选择时,使用准备好的Select语句是否更好?或者只是$pdo->quote()就足够了(或者有任何其他优势,比如缓存?)。我所有的更新、删除和插入都是使用准备好的语句完成的。我只是对选择感到好奇。 最佳答案 MySQLPerformanceBlog.com在一篇关于“PreparedStatements”的文章中做了一些基准测试。彼得扎伊采夫写道:I’vedonea

php - 创建 PDO 迭代器

我在流动this创建数据库迭代器的文章。我有类似的表格和记录。但是当我执行时,我得到了空白页。我认为关于$data=newDbRowIterator($stmt);的问题,它没有返回正确的迭代器来运行FilterIterator类中的accept方法。我正在使用Laravel 最佳答案 这篇文章是一个恶作剧。它声称所提供的技术可以加速使用PDO的数据库调用,但实际上它会显着降低它们的速度。它所依据的前提也是错误的。PDOStatement已经可以遍历,您不需要任何技巧就可以使用foreach遍历PDOStatement。基准测试部分

php - 在 Windows 上使用 PHP 时,(1) SQL Server 的 native 驱动程序或 (2) PDO 驱动程序哪个更好?

我在Windows上使用PHP5.3.6并连接到SQLServer2008数据库。根据MSDN处的文档有两个驱动程序供我选择。php_sqlsrv_53_nts_vc9.dllphp_pdo_sqlsrv_53_nts_vc9.dll关于如何使用每一个的文档很棒,但我不确定为什么我会使用一个而不是另一个。有人可以提供一些基本差异(语法除外)的见解以及为什么一个比另一个更好吗? 最佳答案 使用PDO的好处是,如果您的托管环境更改为Linux或SQLServer不可用,那么您几乎不需要更改。连接字符串,您可以在其中指定哪种数据库(SQL

php - 使用PDO时如何获取原始表/列名?

借助PHP的mysqli扩展,我可以使用fetch_field()方法通过orgname和获取列和表的原始(无别名)名称结果中的orgtable。PDO提供了方法getColumnMeta(),但是没有提供原始表名和列名的信息;它只返回别名。是否有其他方法可以使用PDO获取此信息?我一直在考虑从SQL查询中解析信息,但我希望有更漂亮的解决方案...SELECTidAScol1,sessionAScol2FROMsessionsAStable1;使用PDOStatement::getColumnMeta()的结果:Array([native_type]=>LONG[flags]=>Arr

php - 将空字符串绑定(bind)到 pdo 准备查询时出现 HY104 Sql 服务器错误

我应该将一个应用程序从mssql函数移动到PDO。一切都运行得很顺利,直到我发现自己遇到了一个我似乎无法解决的小错误。这是我准备好的请求:$req_action="INSERTINTO[".DB_SCHEMA."].[dbo].[".ACTION_TABLE."]([ID_CONTACT],[ID_ADN],[TYPE_ACTION],[MOTIF_ENTRANT],[COMMENTAIRES_APPEL],[CODE_CAMPAGNE],[EMAIL],[SUJET],[STATUT_EMAILING],[DATE_ENVOI],[DELAI_OUVERTURE],[MAIL_CLI

php - 执行多个查询时的 Doctrine (DBAL) 错误处理

我有一个模式sql文件(有语法错误),包括对设置数据库的多个查询example.sqlCREATETABLEIFNOTEXISTS`example`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`textCOLLATEutf8_unicode_ciNOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8COLLATE=utf8_unicode_ciAUTO_INCREMENT=1;CREATExxxxxxxxxxTABLEIFNOTEXISTS`example2`(`id`int(11)NOTNU

php - 准备好的语句不能用整数值执行多次

如何使用不同的整数值正确地重新执行准备好的语句?在重用ODBC准备语句时,显式和隐式绑定(bind)PDO::PARAM_INT存在严重错误。CREATETABLEmytab(colINT,somethingVARCHAR(20));工作:多个字符串$pdoDB=newPDO('odbc:Driver=ODBCDriver13forSQLServer;Server='.DATABASE_SERVER.';Database='.DATABASE_NAME,DATABASE_USERNAME,DATABASE_PASSWORD);$pdoDB->setAttribute(PDO::ATTR