小编rae*_*kid的帖子

为什么构建PDO连接速度慢?

我在我的PHP应用程序中使用PDO.它连接到同一服务器上的MySQL服务器:

$db = new PDO(mysql:host=localhost;dbname=test, $username, $password);
Run Code Online (Sandbox Code Playgroud)

我创建了两个具有相同输出的页面(只是普通html中的一些虚拟数据),其中一个包含创建PDO的调用.如果我打开不使用连接的页面,响应速度会提高0.5到1秒.

php pdo

35
推荐指数
1
解决办法
1万
查看次数

如何测试MySQL事务?

我有一个关于在事务中测试查询的问题.我一直在使用MySQL事务很长一段时间,每次我这样做,我都会使用类似的东西:

$doCommit = true;
$error = "";
mysql_query("BEGIN");

/* repeat this part with the different queries in the transaction
   this often involves updating of and inserting in multiple tables */
$query = "SELECT, UPDATE, INSERT, etc";
$result = mysql_query($query);
if(!$result){
    $error .= mysql_error() . " in " . $query . "<BR>";
    $doCommit = false;
}
/* end of repeating part */

if($doCommit){
    mysql_query("COMMIT");
} else {
    echo $error;
    mysql_query("ROLLBACK");
}
Run Code Online (Sandbox Code Playgroud)

现在,我经常想要测试我的事务,所以我mysql_query("COMMIT");改为mysql_query("ROLLBACK");,但我可以想象这不是测试这种东西的好方法.将每个表复制到temp_table并更新并插入到这些表中并在之后删除它们(例如因为表可能非常大)通常是不可行的.当然,当代码投入生产时,相关的错误处理(而不仅仅是打印错误)就会到位.

做这样的事情最好的方法是什么?

mysql debugging transactions

13
推荐指数
1
解决办法
5009
查看次数

PHP停止foreach()

有一个变量$posts,它给出了一个包含许多值的数组.

foreach() 用于输出:

foreach($posts as $post) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

如何只显示五个第一个值$posts

就像,如果我们有100个值,它应该只给五个.

谢谢.

php foreach count

9
推荐指数
2
解决办法
3万
查看次数

如何禁用远程登录到phpmyadmin

标题几乎概括了我的问题。我只想了解如何禁用对我的phpmyadmin的远程登录。我宁愿只能从本地主机登录phpmyadmin。

phpmyadmin remote-access

5
推荐指数
1
解决办法
1万
查看次数

使用 S/MIME (PHP) 发送带有附件的电子邮件

我正在尝试从 PHP 发送带有附件的加密电子邮件,但是,我的电子邮件仅在电子邮件客户端(在本例中为 MS Outlook)中显示为纯文本。这是我用来发送电子邮件的代码:

$semi_rand = md5(time());   
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";   
$fileatt = "\path\to\attachment";
$headers = array();
$headers['From'] = $email_from;
$headers['Subject'] = $email_subject; 
$headers['MIME-Version'] = "1.0";
$headers['Content-Type'] = "multipart/mixed; boundary=\"{$mime_boundary}\"";    

$file = fopen($fileatt,'rb');   
$data = fread($file,filesize($fileatt));
$data = chunk_split(base64_encode($data));     
fclose($file);   

//message part
$email_message = "This is a multi-part message in MIME format.\n\n" .   
                "--{$mime_boundary}\n" .   
                "Content-Type:text/html; charset=\"UTF-8\"\n" .   
                "Content-Transfer-Encoding: 7bit\n\n
                                     Please find the file attached\n\n";   


//file part
$email_message .= "--{$mime_boundary}\n" .   
                  "Content-Type: {$fileatt_type};\n" .   
                  " name=\"{$fileatt_name}\"\n" .   
                  "Content-Transfer-Encoding: base64\n\n" . …
Run Code Online (Sandbox Code Playgroud)

php smime

4
推荐指数
1
解决办法
4522
查看次数

PHP特性是否是一个很好的解决方案

我正在研究一个MVC应用程序,其中使用所有实际模型必须扩展的抽象基类来实现Model.在每个模型中都有一些关于该模型的信息,目前实现为数组,让我们调用它protected static $info.因此,每个模型都有不同的$info数组.现在,基类有很多函数使用来自该数组的数据,并且目前这些函数中的每一个都以类似下面的示例save()函数开头.

abstract class BaseModel {
    function save(){
        $className = get_called_class();
        $modelInfo = $className::$info;
        /* lots of other stuff */
    }
}

class User extends BaseModel {
    protected static $info = array("tableName" => "tblUsers", etc...)
}
Run Code Online (Sandbox Code Playgroud)

在我的理解中,这可以通过使BaseModel成为特征而不是构造函数来解决,因为当traits定义static属性时,每个继承类都有自己的值.我会将$info模型的实现中的数组复制到特征中,可能在构造函数中,这样我就可以self::info['tableName']在BaseModel的所有函数中使用...

这是个好主意吗?

php traits

2
推荐指数
1
解决办法
478
查看次数