$\u使用PHP发布到SQL
我正在尝试为将来的错误创建一个日志记录表,该表将记录经过我运行的系统的所有$u POST 我喜欢认为我能胜任PHP,我认为:$\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
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
。尽管如此,你还是得到了一张赞成票,因为你的答案恰到好处。