Php 多部分表单数据不存在';你不允许撇号吗?
我正在使用以下表单代码:Php 多部分表单数据不存在';你不允许撇号吗?,php,forms,Php,Forms,我正在使用以下表单代码: <form enctype="multipart/form-data" action="process.php" method="POST"> <input type="text" name="draftTitle"/> <textarea name="draftText" class="draftText"></textarea> <input type="file" name="uploadfile"/&g
<form enctype="multipart/form-data" action="process.php" method="POST">
<input type="text" name="draftTitle"/>
<textarea name="draftText" class="draftText"></textarea>
<input type="file" name="uploadfile"/>
<button class="draftSubmit">Add</button>
</form>
正如您将看到的,还有一些额外的字段。为了简化问题,我删除了上面的内容
更新
我正在使用以下代码插入数据库
$query = "INSERT INTO posts (line_id, user_id, stamp_title, element, type) VALUES ('$line_id', '$user_id', '$stamp_title', '$data', '$type')";
mysql_query($query);
已解决:
我添加了mysql\u real\u escape\u字符串,它成功了。感谢所有帮助过我的人
$data = mysql_real_escape_string($data);
我的观察是,这不是PHP的问题,而是用于将值放入数据库或文件的其余代码的问题。请把代码也贴出来
我假设您正在向MySql数据库插入值。为了帮助您完成此操作,您可以在插入之前尝试使用函数为mysql做准备。如果您提交的表单是:
-----------------------------276443266232757
Content-Disposition: form-data; name="MAX_FILE_SIZE"
4000000
-----------------------------276443266232757
Content-Disposition: form-data; name="userID"
2
-----------------------------276443266232757
Content-Disposition: form-data; name="lineID"
1
-----------------------------276443266232757
Content-Disposition: form-data; name="draftTitle"
This is my title
-----------------------------276443266232757
Content-Disposition: form-data; name="uploadfile"; filename=""
Content-Type: application/octet-stream
-----------------------------276443266232757
Content-Disposition: form-data; name="draftText"
It's my description with an apostrophe in it.
-----------------------------276443266232757--
很好,你的撇号在那里
然而,从这一点到:
$query = "INSERT INTO posts (line_id, user_id, stamp_title, element, type) VALUES ('$line_id', '$user_id', '$stamp_title', '$data', '$type')";
mysql_query($query);
这似乎是个问题,因为您在SQL插入中使用了撇号。您应该在每个输入变量上调用or(如果有扩展名)。我注意到您的表单中没有任何提交控件。您是如何提交表单的?我复制了HTML并将其放入一个测试文件中,将其指向一个php脚本,该脚本只打印所有POST参数,到处都提交了撇号,一切都正常。@HernanVelasquez我通过按“回车”提交了表单当焦点在第一个文本字段中时。对不起,是的,它有一个提交按钮,我只是忘记在上面添加它…刚刚编辑它…你确定没有发送任何内容吗?您是否已检查Firebug或类似文件以查看实际发送到服务器的内容?$query=“插入帖子(行id、用户id、戳记标题、元素、类型)值(“$行id”、“用户id”、“戳记标题”、“数据”、“类型”)”;mysql\u查询($query);试试这个-$name=mysql\u real\u escape\u字符串($post['draftText']),然后形成查询。你还应该尝试使用fiddler或类似的实用程序检查实际发布的值。
$query = "INSERT INTO posts (line_id, user_id, stamp_title, element, type) VALUES ('$line_id', '$user_id', '$stamp_title', '$data', '$type')";
mysql_query($query);