释放与服务器的连接,以便可以发出其他SQL语句,但使语句处于允许再次执行的状态.
当我使用该命令时,如果它在我的查询语句之间是否存在似乎并不重要,我开始怀疑我是否需要它.
将它用于不返回数据的数据库调用与那些数据调用是否不同?
有人可以告诉我,当你例如更新,插入,删除..你应该关闭它mysqli_stmt::close();吗?我检查了PHP手册,但不明白close()实际做了什么.
例:
$stmt = $dbh->prepare("SELECT `user_email` FROM `users` WHERE `user_email` = ? LIMIT 1");
$stmt->execute(array($email));
$stmt->close();
Run Code Online (Sandbox Code Playgroud)
我的问题的一个部分是,如果作为一个例子,我曾在多次更新查询交易后,每execute()因为我是内执行的每个查询交易,我应该单独关闭它们?...因为这是一个不确定我需要$stmt->close();在每次执行后使用的事务(); 或者只是$stmt->close();在他们之后使用一个?
有时,当我打开错误日志文件时,会看到此错误
[2014 年 6 月 14 日 19:09:55 UTC] PHP 致命错误:未捕获的异常“PDOException”,消息为“SQLSTATE[HY000] [1040] /home/root/products/db.php:2 中的连接过多”
堆栈跟踪:/home/root/products/db.php(2): PDO->__construct('mysql:host=loca...', 'database', 'password')
/home/root/products/by-brand.php(2): include_once('/home/root/...')
{main} 在第 2 行的 /home/root/products/db.php 中抛出
[2014 年 6 月 14 日 19:15:11 UTC] PHP 致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1286 /home/root/products/detail 中的未知存储引擎 InnoDB .php:8
堆栈跟踪:/home/root/products/name.php(8): PDO->prepare('select * from p...')
{main} 在第 8 行的 /home/root/products/name.php 中抛出
我试图通过使用关闭每个脚本来解决这个问题,$db=null;但它似乎不起作用。
我联系了服务提供商。他们说一切正常。您需要在最后检查错误。我只有几个用户。
为什么我有时会收到此错误?
我的主机是无限的:无限的磁盘空间。无限带宽,但我仍然收到此错误。我不知道我该如何解决这个问题。我希望让我的网站更大,但这些错误让我感到困惑
我的 db.php 文件有这个代码。你能检查一下这是否正常?也许这是导致问题的原因。
数据库文件
$db = new PDO('mysql:host=localhost;dbname=mobiles;charset=utf8', 'root', '**somePassword**');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
Run Code Online (Sandbox Code Playgroud)