Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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
Php 长文本条目未插入MySQL_Php_Mysql_Forms - Fatal编程技术网

Php 长文本条目未插入MySQL

Php 长文本条目未插入MySQL,php,mysql,forms,Php,Mysql,Forms,我有一个只有2个用户可编辑字段的表单。一个是文本字段,用于输入数字ID,另一个使用tinyMCE输入大量文本,以便在提交时保存到MySQL中: if ( !empty ( $_POST ) ) { $location_id = $_POST['restaurant_id']; $content = $_POST['content']; $query = "INSERT INTO restaurant_reviews (location_id,

我有一个只有2个用户可编辑字段的表单。一个是文本字段,用于输入数字
ID
,另一个使用tinyMCE输入大量文本,以便在提交时保存到MySQL中:

if ( !empty ( $_POST ) ) {
    $location_id = $_POST['restaurant_id'];
    $content = $_POST['content'];
    $query = "INSERT INTO restaurant_reviews 
              (location_id, text1, review_date) 
              VALUES
              ('$location_id', '$content', NOW())";
    $execute = mysqli_query($dbc, $query);
    print_r($_POST);
}
问题是,即使以表单形式提交了相当少量的文本(我指的是最多2/3的正常段落),也不会在MySQL中生成记录。表单每次都成功提交,tinyMCE字段中只有几个字的文本

不管表单中提交的文本量有多大,当print_r函数将其输出时,它都会出现在post数组中,只是没有到达DB。text1列是longtext类型,因此请确保这不是问题所在。有什么想法吗?

我建议你使用

$connection = mysqli_connect("database_host", "username", "password", "database_name");

$id         = (int)mysqli_real_escape_string($connection, $_POST['restaurant_id']);
$content    = mysqli_real_escape_string($connection, $_POST['content']);

要转义可能干扰SQL语句的字符

如果发布的内容中有任何引号字符,您希望发生什么?您的代码完全可以接受SQL注入!请阅读准备好的语句的好处,以及它们如何帮助解决这个问题。您的代码不会逃避输入,因此任何单引号都会打断查询。您可以向我们提供示例$u POST['content']使用
bind\u param()
而不是字符串替换,这样你就不必逃避任何事情,最好是推荐使用绑定变量