【问题标题】:php, change a db: from MySQL to txt filephp,更改一个数据库:从 MySQL 到 txt 文件
【发布时间】:2011-02-07 21:18:18
【问题描述】:

我是编程新手,我找到了这个脚本,我想根据我的需要调整它,这个脚本将邮件地址保存在 MySQL db 中,但我想将它保存在文件 txt 中,可以重新使用此代码?

地址.php

require "includes/connect.php";

$msg = '';

if($_POST['email']){

    // Requested with AJAX:
    $ajax = ($_SERVER['HTTP_X_REQUESTED_WITH']  == 'XMLHttpRequest');

    try{
        if(!filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)){
            throw new Exception('Invalid Email!');
        }

        $mysqli->query("INSERT INTO coming_soon_emails
                        SET email='".$mysqli->real_escape_string($_POST['email'])."'");

        if($mysqli->affected_rows != 1){
            throw new Exception('This email already exists in the database.');
        }

        if($ajax){
            die('{"status":1}');
        }

        $msg = "Thank you!";

    }
    catch (Exception $e){

        if($ajax){
            die(json_encode(array('error'=>$e->getMessage())));
        }

        $msg = $e->getMessage();
    }
}

connect.php 在哪里

<?php

error_reporting(E_ALL ^ E_NOTICE);

$db_host = '';
$db_user = '';
$db_pass = '';
$db_name = '';

@$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);

if (mysqli_connect_errno()) {
die('<h1>Could not connect to the database</h1><h2>Please try again after a few moments.</h2>');
}

$mysqli->set_charset("utf8");


?>

【问题讨论】:

  • “重用”这个没有意义,因为可能有 5% 的代码与数据库无关。
  • 是的,这听起来像是完全重写

标签: php mysql email text-files


【解决方案1】:

该文件非常特定于使用数据库。但是,使用文件并不困难。我建议不要使用普通文件,而是考虑使用像 sqlite 这样的数据库,它使用文件而不是完全成熟的数据库。

如果你设置使用文件,你可以很容易地在 php.ini 中操作文件。一些例子如下:

    $file = fopen('path/to/file', 'r+');

    fputs($file, 'email@domain.com'); 
    // fputs() is an alias for fwrite, they are interchangable

This page 详细介绍了使用fopen() 打开文件的不同模式。您需要特别注意该模式是在文件的开头还是结尾打开文件指针。如果您在文件中写入了一些电子邮件,然后在开始时使用文件指针再次打开文件以写入更多电子邮件,您将覆盖现有数据。这是使用数据库的一个很好的理由,因为它需要更大的麻烦才能删除您现有的数据。

fputs() 用于将行写入文件。显然,您可以传递一个变量而不是我在示例中硬编码的字符串,只需确保该变量是一些有意义的字符串。例如,您不能传递一组电子邮件。您必须遍历数组并为每封电子邮件调用 fputs()。

【讨论】:

    【解决方案2】:

    您可以重复使用其中的一部分;实际将数据保存到数据库的行是以$mysqli-&gt;query 开头的行,后面的行是检查是否成功。删除它们,并用您自己的文本文件保存函数替换它们(并将它们放在包含文件中,而不是定义 mysqli 连接器的给定文件)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      相关资源
      最近更新 更多