Php 为什么在尝试向数据库输入超过500个字符时会出现错误?
我在数据库中有项目,但为什么当我试图从textarea导入超过500个字符时出现错误,字段的数据类型是TEXT 这是表格的一部分Php 为什么在尝试向数据库输入超过500个字符时会出现错误?,php,mysql,textarea,Php,Mysql,Textarea,我在数据库中有项目,但为什么当我试图从textarea导入超过500个字符时出现错误,字段的数据类型是TEXT 这是表格的一部分 <?php //query to get the $ProductDesc and some other codes then echo "<textarea name='p_desc' id='p_desc' class='input' rows='10' cols='53'>$ProductDesc</textarea>"; ?&g
<?php
//query to get the $ProductDesc and some other codes then
echo "<textarea name='p_desc' id='p_desc' class='input' rows='10' cols='53'>$ProductDesc</textarea>";
?>
然后我尝试(更新或添加)记录
导入时出错,更新时未生效
这是我的更新查询
mysql_query("UPDATE product SET ProductDesc='$a4' WHERE ProductID = $productID ");
请在高级帮助和感谢,PHP中的错误还是什么
表格标题:
<form name="myform" action="add-product.php" method="post" enctype="multipart/form-data">
我之所以使用enctype=“multipart/form data”,是因为我上传图像,除了textarea之外,其他一切都很好。您如何设置
ProductDesc
字段?是varchar
,mediumtext
,longtext
?我总是使用长文本
,而且我从来没有遇到过超过500个字符的问题。发布表单后,在将其提交到数据库之前,可能需要从描述中删除一些字符
还有一个小嗝:D
而不是
<?php
//query to get the $ProductDesc
<textarea name='p_desc' id='p_desc' class='input' rows='10' cols='53'>$ProductDesc</textarea>
?>
使用
在查询之前添加
$a4 = mysql_real_escape_string($a4);
事实上,您应该对进入查询的任何用户指定的值调用此函数。您不仅可以产生错误,例如您所看到的错误,而且还可以将描述指定为
'; DROP TABLE product; --
那你就真的有麻烦了。这就是众所周知的错误,您应该非常小心。您忘记了错误。最有可能的是,字符#501是一个单引号;查看与您的MySQL服务器版本对应的手册,了解使用near“新发现的教师角色帮助他接受动荡的过去”的正确语法,'在第1行,但关键是当我从PHPMyAdmin编辑产品详细信息时,它可以工作,但是文本区域我不能更改它,除非它很小。表单中的其他字段可以工作。发布数据有限制吗??表单的操作是相同的页面,方法是post,但如果我测试的字符数少于200,则一切都正常,但我应该存储大量数据,我现在使用的是“longtext”,但仍然相同,我无法编辑大文本,但小文本我可以请你解释更多,请看我现在添加的问题中的表格,也许这就是问题所在??请您简单地解释一下SQL注入,您的
表单
标记没有问题(尽管指定enctype
是不必要的)。当您在查询中包含用户输入而不首先转义任何特殊字符(如引号和反勾号)时,就会发生SQL注入。当这种情况发生时,您将打开一扇门,让用户在您的服务器上执行任意SQL语句,方法是断开任何引号,如我上面介绍的示例所示。如果这是正确转义的,那么我指定的描述将变成\;升降台产品;——是的,非常感谢你的帮助,我用了:“$a4=mysql\u real\u escape\u string($a4);”它可以工作:)谢谢,我使用enctype,因为我也上传图片。是的,它在echo中,如果文本区域中的字符少于200个字符,代码运行良好。如果它更多,我不能从管理员处编辑它,我应该转到PHPMyAdmin进行编辑:(
$a4 = mysql_real_escape_string($a4);
'; DROP TABLE product; --