Tag: Pdo

MySQL查询随机滞后

我有一个查询,看起来像这样: SELECT id FROM user WHERE id='47' 该ID已编入索引,并且使用分析数据时,此查询的读取速度始终很快,如下所示。 SET profiling = 1; SHOW PROFILES; 查询总是在大约0.0002秒内执行。 但是,如果我从PHP侧面查询查询,如下所示: $current = microtime(true); $data = $conn->query($full_query); $elapsed = microtime(true) – $current; 然后偶尔有50个这样的查询中的1个会花费0.2秒。 然而,在我的testing脚本中,我有代码来testing这个configuration文件查询使用SET profiling = 1; 即使通过PDO的PHP往返时间可能是0.2秒,查询时间仍然是0.0002。 我知道的东西,或者知道不是造成这个问题: 查询不慢。 当我查看相同的查询时,从相同的查询运行,在PHP中进行概要分析并使用SET PROFILING进行概要分析,查询总是很快,并且从不login缓慢的查询日志,即使它显示从PHP端花费0.2秒。 这不是skip-name-resolve相关 – 这是不一致的,我已经跳过名称parsing 这不是查询caching相关的,行为存在于两者中 甚至在从caching中出来的查询时也会发生这种行为。 该查询实际上并不selectID,但我使用此查询进行testing,以显示它不是磁盘访问问题,因为该字段肯定是索引的。 这张桌子只有10-20兆像一个1兆指数。 机器显示非常小的负载,innodb没有使用所有的缓冲区。 除了我的testing查询之外,这是针对没有其他活动的表进行testing的。 有没有人有什么想检查什么? 这似乎是一个networking问题,但我需要能够看到它,并find问题来解决它,我没有地方检查下一步。 有任何想法吗?

从PDO准备语句获取查询

有没有办法检索用于生成PDO Prepared语句对象的查询?

PDO UTF-8字符问题

我目前正在做一个项目,而不是使用普通的MySQL查询,我想我会继续学习如何使用PDO。 我有一个叫做参赛者的表,数据库,表和所有的列都在utf-8中。 我在参赛桌上有十个参赛作品,他们的专栏“名字”中包含åäö等字。 现在,当我从数据库中获取一个条目,并且var_dump这个名字的时候,我得到了一个好的结果,一个包含所有特殊字符的string。 但是我需要做的是按字符分割string,把它们放到一个数组中,然后我就可以随机播放。 例如,我有这个string: testingÅÄÖTåän 而当我运行str_split我得到每个字符在它自己的密钥在一个数组中。 唯一的问题是所有的特殊字符显示为: ,这意味着数组将如下所示: Array ( [0] => T [1] => e [2] => s [3] => t [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => T [13] => [14] => [15] => [16] => [17] => n ) […]

为什么连接失败时PDO会打印我的密码?

我有一个简单的网站,我使用PDObuild立与Mysql服务器的连接。 $dbh = new PDO('mysql:host=localhost;dbname=DB;port=3306', 'USER', 'SECRET',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); 我在我的网站上有一些stream量,并达到了服务器连接限制,网站抛出这个错误,我的PLAIN密码! 致命错误:带有消息'SQLSTATE的未捕获exception'PDOException'[08004] [1040] /home/domain/html/index.php:xxx中的连接太多堆栈跟踪:#0 /home/domain/html/index.php (64):PDO – > __ construct('mysql:host = loca …','USER','SECRET',Array)#1 {main}在第64行抛出/home/domain/html/index.php 具有讽刺意味的是,为了安全起见,我转而使用PDO,所以这真的让我感到震惊,因为这个确切的错误是你可以在大多数使用简单http泛滥的站点上很容易引起的。 我现在已经把我的连接包装在try / catch块中,但是我认为这是灾难性的! 我是PDO的新手,所以我的问题是:为了保证安全,我该怎么做? 如何以安全的方式build立连接? 还有其他已知的安全漏洞,我必须注意这个吗?

使用try {} catch {}与其他{}的优点是什么?

我正在切换从普通的MySQL在PHP到PDO,我注意到,testing错误的常见方法是使用try / catch组合而不是if / else组合。 这种方法的优点是什么,我可以使用一个try / catch块而不是几个嵌套的if / else块来处理不同步骤(连接,准备,执行等)的所有错误?

为什么构buildPDO连接速度慢?

我在我的PHP应用程序中使用PDO。 它连接到同一台服务器上的MySQL服务器: $db = new PDO(mysql:host=localhost;dbname=test, $username, $password); 我创build了两个具有相同输出的页面(只是一些纯HTML中的虚拟数据),其中一个包含创buildPDO的调用。 如果我打开不使用连接的页面,则响应速度在0.5到1秒之间。

PHP的PDO与普通的mysql_connect

我应该使用PHP的PDO或正常的mysql_connect在PHP中执行数据库查询? 哪一个更快? PDO的一大优点是界面在多个数据库中是一致的。 准备好的语句也有一些很酷的function,从而避免了所有查​​询string的麻烦。 PDO的可移植性大于mysql_connect。 那么,我应该使用PDO的原因还是坚持传统的mysql_connect?

如何在PDO PHP中查看查询错误

try { $db = new PDO("mysql:host=".HOST.";dbname=".DB, USER, PW); $st = $db->prepare("SELECT * FROM c6ode"); } catch (PDOException $e){ echo $e->getMessage(); } 在上述情况下,如何检查mysql错误的查询?

PDO :: PARAM的date?

是否有一些PDO::PARAM_??? 存在哪些可用于date或时间戳? 示例代码: $sql = "UPDATE my_table SET current_date = :date WHERE id = 43"; $statement = $pdo->prepare ($sql); $statement->bindParam (":date", strtotime (date ("Ymd H:i:s")), PDO::PARAM_STR); $statement->execute ();

PDO :: PARAM是十进制的types吗?

我有2个数据库字段 `decval` decimal(5,2) `intval` int(3) 我有2个更新它们的pdo查询。 更新int的工作正常 $update_intval->bindParam(':intval', $intval, PDO::PARAM_INT); 但是我不能更新小数字段。 我已经尝试了以下三种方式,但没有任何工作 $update_decval->bindParam(':decval', $decval, PDO::PARAM_STR); $update_decval->bindParam(':decval', $decval, PDO::PARAM_INT); $update_decval->bindParam(':decval', $decval); 看来问题是数据库types的decimal ? 是否有一个PDO::PARAMtypes的decimal字段? 如果不是,我该如何解决这个问题?