我正在使用闪存进行AS3程序;在程序中,您输入您的用户名和密码,并选择一副卡进行注册;单击注册按钮时,flash会从卡片组中发送用户名,密码和长字符串,长度超过1 MB(但目前只有1 KB长)。
为此,我使用INSERT INTO
方法。这是我的代码:
<?php
/*
connect to database
*/
include "connect.php";
/*
create POST vars to receive data from flash
*/
$username = $_POST['username'];
$password = $_POST['password'];
$sdTrunkest = $_POST['sdTrunk'];
$sql = "INSERT INTO users (username, password, Trunk) VALUES ('$username', '$password', '$sdTrunkest')";
mysql_query($sql);
exit("result_message=Success");
?>
当我运行此代码而$ sdTrunkest大约可能是100字节时,它运行正常并注册。但是当我尝试在$ sdTrunkest大约1 KB时运行它时,它只是“假装它从未见过”INSERT INTO
行。它没有给我一个超时错误,即便如此我尝试使用ini_set('max_execution_time', 0);
,但它没有改变。事实上,它根本不会给我任何错误。 INSERT INTO
无法处理长文本吗?有没有办法解决这个问题?
提前谢谢^^
答案 0 :(得分:1)
我发现了问题。它与mysql_connect错误没什么关系,但我不妨改成mysqli以避免其他错误。 无论如何,问题在于字符串本身;不是它的大小,而是它的内容。其中一张牌的名字有一个撇号,这可能是什么搞砸了。我删除了撇号,复制了文本并粘贴了多次以增加尺寸,它仍然完美无缺。
我想这个问题被频繁询问的原因是因为你添加的文字越多,就越有可能犯错误。
非常感谢评论^^
的所有人答案 1 :(得分:1)
是的,这通常被称为消毒输入,是我的第一个评论。有几种方法可以消毒,但最容易理解的是使用mysql_real_escape_string(http://www.php.net/manual/en/function.mysql-real-escape-string.php)