1

我正在尝试为将来的错误创建一个日志表,该表将记录通过我运行的系统的所有 $_POST(s)。

我喜欢认为我能胜任 PHP,我认为要么: var_dump($_POST)要么print_r($_POST)放入varchar(9000)SQL 表中。但事实并非如此。我已经进行了大量研究,这是我实际尝试的代码:

    $post_error_logging = "INSERT INTO post (title, post, flname, stamp) VALUES('".$_SERVER["SCRIPT_FILENAME"]."', '".var_dump($_POST)."', '".$_SESSION['username']."', '".date('Y-m-d H:i:s',strtotime('-3 hours'))."')";
    mysql_db_query("database", $post_error_logging);

它不工作。请任何帮助将不胜感激。

我尝试过的一些事情:

$this->db->insert_string($_POST)

也无法使其正常运行....

4

3 回答 3

3

$_POST是一个数组,所以:

如果KEYs(输入名称)很重要
, 您可以使用serialize()它来将其转换为字符串,然后将其存储到数据库中。

$post_string = serialize($_POST);

你可以通过 . 再次将它变成数组unserialize()

$post_array = unserialize($post_string);


但是如果KEYs(输入名称)并不重要
, 您可以使用implode()将其转换为字符串,然后将其存储到数据库中。

$post_string = implode(",", $_POST);

你可以通过 . 再次将它变成数组explode()

$post_array = explode(",", $post_string);
  • 并使用TEXTLONGTEXT输入您的 mySQL 而不是varchar(9000)大字符串。
于 2013-05-28T23:05:08.923 回答
0

http://www.php.net/manual/en/function.var-dump.php

引用:

Return Values

No value is returned.

看到问题了吗?

尝试序列化()和反序列化()

http://www.php.net/manual/en/function.serialize.php

于 2013-05-28T23:16:01.600 回答
0

print_r(xxx,true)将允许您将结果连接为字符串。

您提到 varchar(9000)... 我认为这不足以存储输出。您可能需要考虑在数据库中使用文本字段。

此外,请确保您有一种方法来转义引号,以免破坏您的查询。

于 2013-05-28T23:21:27.727 回答