草庐IT

u2-pdo-driver

全部标签

php - 我怎样才能简单地返回 PDO 中的对象?

第一次尝试PDO。$dbh=newPDO("mysql:host=$hostname;dbname=animals",$username,$password);$stmt=$dbh->query("SELECT*FROManimals");$stmt->setFetchMode(PDO::FETCH_INTO,newanimals);foreach($stmtas$animals){echo$animals->name;}如果我跳过setFetchMode()方法,那么我需要调用我不想要的$animals["name"]。但我不想为每个查询调用setFetchMode()。有没有办法设

php - 在不绑定(bind)的情况下在 PDO 中运行查询

您可以在不准备PDO的情况下运行查询吗?我知道随之而来的SQL注入(inject)问题,但我在测试环境中。我希望能够编写纯MySQL查询并直接执行它们,而不必准备查询、绑定(bind)占位符等...我希望能够立即执行如下查询。INSERTINTOtable(table_id,car,bike,date)VALUES(1,'bmw','suzuki',2004)我似乎在直接对此查询运行execute()时遇到错误。提前致谢。 最佳答案 preparedstatements的主要思想不是你可以绑定(bind)参数,而是你可以多次重用编译

php - PDO 异常在 laravel 中找不到驱动程序

我试图在Laravel5中执行迁移命令。但它显示PDOException错误。我将database.php文件更改为以下内容:'mysql'=>['driver'=>'mysql','host'=>env('DB_HOST','localhost'),'database'=>env('DB_DATABASE','laravel'),'username'=>env('DB_USERNAME','root'),'password'=>env('DB_PASSWORD',''),'charset'=>'utf8','collation'=>'utf8_unicode_ci','prefix'

php - 如何让 Mink Selenium 2 Driver 等待页面加载 Behat

我正在从Behat2.x系列升级到Behat3.x系列。在之前的版本中,我可以加载Selenium1驱动程序,它附加到PhantomJS以执行测试。当我这样做时,我能够连接到一个名为waitForPageToLoad()的函数。此功能由php-selenium(来自AlexandreSalomé)提供。它连接到selenium并调用同名的驱动程序操作。这对于确保Selenium等待页面加载非常有效。至少直到达到超时。它使测试进行得更快。问题是Selenium1驱动程序与Behat3.x不兼容。看起来它几乎已被放弃,我在Mink的Selenium2驱动程序中没有看到该功能。有谁知道使用B

php - 如何使用 PDO 确定列类型?

当使用PDO从数据库中读取时,我需要一种方法来确定数据库列的类型(varchar/numeric/date/...)。从数据库中获取值时,PDO只生成字符串值,而不管表列的实际类型。是否有任何非驱动程序特定的方法来获取此信息?我知道有SQL语句可以检索任何给定表的类型,但我更喜欢更通用的解决方案。编辑:PDOStatement::getColumnMeta()对我没有用,因为我目前使用的PDO驱动程序(Oracle)不支持它。 最佳答案 看看这个方法:PDOStatement->getColumnMeta

php - PDO 不转义字符串引号

我在使用PDO访问我的数据库的php脚本中遇到问题。当我在PDO中使用prepare()或execute()时,我似乎无法让PDO转义我的字符串。我找遍了,但没有找到这个问题的答案,因为我到处都看到它说PDO自动转义字符串。这是我的代码:$statement=$db->prepare("INSERTINTOTable(ID,Column1,Column2)VALUES(NULL,'$var1','$var2')");$query->execute();让我们承认$var1="abc'def"和$var2="123"问题是我收到一条错误消息,因为引号没有转义。Error:SQLSTATE

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 - 创建 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