Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
$\u使用PHP发布到SQL_Php_Sql_Post - Fatal编程技术网

$\u使用PHP发布到SQL

$\u使用PHP发布到SQL,php,sql,post,Php,Sql,Post,我正在尝试为将来的错误创建一个日志记录表,该表将记录经过我运行的系统的所有$u POST 我喜欢认为我能胜任PHP,我认为: var\u dump($\u POST)或print\r($\u POST)到varchar(9000)SQL表中即可。但事实并非如此。 我已经做了大量的研究,这是我正在尝试的代码: $post_error_logging = "INSERT INTO post (title, post, flname, stamp) VALUES('".$_SERVER["SC

我正在尝试为将来的错误创建一个日志记录表,该表将记录经过我运行的系统的所有$u POST

我喜欢认为我能胜任PHP,我认为:
var\u dump($\u POST)
print\r($\u 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)

无法使此功能正常运行….

$\u POST
是一个数组,因此:

如果
s(输入名称)很重要

您可以使用将其转换为字符串,然后将其存储到数据库中

$post_string = serialize($_POST);
$post_string = implode(",", $_POST);
您只需将其转换为数组即可


但是如果
s(输入名称)不重要

您可以使用将其转换为字符串,然后将其存储到数据库中

$post_string = serialize($_POST);
$post_string = implode(",", $_POST);
您只需将其转换为数组即可

  • 在mySQL中使用
    TEXT
    LONGTEXT
    而不是
    varchar(9000)
    输入大字符串

引述:

Return Values

No value is returned.
看到问题了吗

尝试序列化()和取消序列化()

print\r(xxx,true)
允许您将结果连接为字符串

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

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

另外,请确保您有一个转义引号的方法,这样就不会打断您的查询。

您听说过sql注入吗PDo请不要使用mysql_*函数,因为它们已被弃用。。。谢谢…并且不允许恢复该数据。另外,
TEXT
每行使用一个完整的MySQL页面,不管数据有多大,而
VARCHAR
可以设置为大大小于此值。我已经有一段时间没有使用MySQL了。为什么不能从文本字段中检索数据?如果是这样的话,在文本字段中存储任何内容有什么意义呢?您不能将
print\r()
输出转换回它来自的对象。这就是为什么其他答案更实用的原因。我没有从OP那里得知他的目标是在以后将存储的帖子作为PHP对象重新水化。他的代码失败有三个基本原因。然而,你是对的。。。Siamak的解决方案确实代表了一种优越的方法。由于来自$\u POST,他的所有变量都是字符串。为了节省数据大小,可能值得使用
json\u encode
。尽管如此,你还是得到了一张赞成票,因为你的答案恰到好处。