草庐IT

PDO_mssql

全部标签

PHP pdo bindParam 类型管理

这是发布表单:$funcname->name=htmlentities($_POST['name']);$funcname->insert();这将是类funcname上的函数insert,它将数据插入名为name的列$this->conn->beginTransaction();$stmt=$this->conn->prepare("INSERTINTOnameTBL(name)values(:name)";$stmt->bindParam(':name',$this->name,PDO::PARAM_INT);if($stmt->execute()){$this->conn->co

php - PDO - 与手动执行相比,特定查询速度非常慢

我遇到了一个特定查询(写在下面)的查询执行非常缓慢。奇怪的是,当手动运行查询(使用phpMyAdmin)时,只需一秒钟即可完成,而从带有PDO的PHP运行它时,需要将近10分钟!其他查询正常执行(PDO和phpMyAdmin之间的持续时间相同)。技术细节:我正在使用Google的AppEngine和CloudSQL。运行PHP5.5执行php代码的应用引擎实例不忙。查询结果约10000行我正在运行的查询:SELECTs.saleID,s.year,s.kilometrage,s.hand,s.price,s.pictures,u.platform,s.date,(SELECTAVG(p

PHP PDO MySQL 以及它如何真正处理 MySQL 事务?

我正在努力克服它,但我就是无法理解使用PDO和MySQL在PHP中处理事务背后的逻辑。我知道这个问题会很长,但我认为这是值得的。考虑到我阅读了很多关于MySQL事务的文章,服务器如何处理它们,它们与锁和其他隐式提交语句的关系等等,不仅在SO上,而且在MySQL和PHP手册上:MysqltransactionswithintransactionsDifferencebetweenSETautocommit=1andSTARTTRANSACTIONinmysql(HaveImissedsomething?)https://dev.mysql.com/doc/refman/5.7/en/co

php - Zend PDO 错误 - 我该如何调试它?

我在使用ZendFramework和Mysql时遇到了一个奇怪的问题。我生成了一个查询:SELECTevents.idUser,szForename,szLastname,readers.szName,idZoneFrom,events.dtTimeFROMevents,users,readersWHEREevents.idUser=users.idUserANDevents.idReader=readers.idReaderANDdtTime>='2010:02:150:00:00'ANDdtTime如果我在某些控制台(如pma、navicat或shell客户端)中运行它,查询工作正

mysql - MySQL 和 MSSQL 之间的分布式事务

我已经尝试了将近一周的时间来让分布式事务正常工作。我在MSSQL上有一些程序试图从MySQL中选择数据。我的需要是在一个(!)事务中执行此操作。当时我已经使用来自OpenLink的单层MySQL驱动程序在MSSQL上设置了ODBC连接,这表明XA事务成功运行(在配置ODBC连接后集成了一个测试按钮)。然后我通过MSDASQL在MSSQL中设置了一个链接服务器到这个ODBC连接,但是在做的时候begindistributedtransactionselect*fromoptin..lu_source_procselect*fromopenquery(optinxa,'SELECT*FRO

php - 通过 PDO 和 mysql 从可能不安全的输入创建新数据库

我正在致力于自动部署我编写的一款软件,需要能够为新帐户生成新的mysql数据库。但是,我对清理输入感到担忧。我正在使用PDO;但是,显然您不能将准备好的语句与“CREATEDATABASE”一起使用。所以,我也尝试使用PDO::quote;然而,我新创建的数据库名称被单引号括起来(不是世界末日,但我仍然想避免这种情况)。有什么方法可以让它与准备好的语句一起使用吗?如果没有,我该怎么做才能尽可能地保护自己免受sql注入(inject)攻击?我唯一的另一个想法是允许一个小的字符白名单。谢谢! 最佳答案 你需要写一个storedproce

php - 使用 PDO bindParam 创建数据库

PDO::ERRMODE_EXCEPTION,//anSQLcommandtoexecutewhenconnectingPDO::MYSQL_ATTR_INIT_COMMAND=>"SETNAMES'UTF8'");//MakinganewPDOconenction.$conn=newPDO($dsn,$login,$password,$opt);$db=$conn->prepare("CREATESCHEMAIFNOTEXISTS`?`");$db->bindParam(1,$dbb);$db->execute();?>它工作正常,但它创建了一个名称为“account”的带有单引号的

php - 抑制 PDO 警告

我正在尝试根据数据库是否可以连接来显示服务器状态。使用老式的mysql_connect()和mysqli_connect()这很容易。我试图保持现代,所以我正在使用PDO,但我不知道如何抑制默认警告。据我所知,您需要使用getMessage()函数来打印PDO警告,但我没有使用它。这是我的代码:8$dbstatus=1;9try{10$db=newPDO($dbms.':host='.$dbhost.';port='.$dbport.';dbname='.$dbname,$dbuser,$dbpasswd);11$db->setAttribute(PDO::ATTR_ERRMODE,P

PHP: PDO(MySQL) SSL 连接

我正在尝试使用以下代码(在带有PHP5.4.4的DebianGNU/Linux7(wheezy)上)建立与MySQL服务器的SSL连接:$db=newPDO('mysql:host=mysql.myorganization.net;dbname=myDB','username','password',array(PDO::MYSQL_ATTR_SSL_CA=>'mysqlCertificates/caChain.pem'));var_dump($db->query("SHOWSTATUSLIKE'Ssl_cipher';")->fetchAll());但是我收到了这个错误:SQLSTA

php - 使用 PDO 进行错误处理的最佳实践

问题:寻找使用PDO进行错误处理的最佳实践。我在网站、SO、书籍等上找到的选项。很多网站都说您应该在catchblock中回显您的错误消息。SO上的大量用户表示,由于存在安全风险,您永远不应回显错误消息。其他人建议将其记录到文档根目录之外的日志文件中。有些使用错误处理将其记录到SQL表中。有了众多选项,您很容易陷入应该使用的选项之中。当然,您可以使用MVC框架并让它为您处理错误日志记录,但如果您不使用MVC,它会是什么样子。据我所知,错误处理在开发环境中应该如下所示:display_errors=Ondisplay_startup_errors=Onerror_reporting=-1