php:如何将大型表单数据插入到mysql中

时间:2016-04-23 22:57:47

标签: php mysql

我正在尝试将具有大约1990个字符的表单中的数据插入到mysql中。插件如何不工作。当我var_damp时,变量的内容显示正确的内容。当我将它设置为空字符串时插入工作。我做了我的研究,仍然无法工作。我不是要上传文件。这个字符来自我表单中的textarea。

下面是插入代码:

if (isset($_POST['val'])) {
    $score = $_POST['val'];
    $course = $_POST['course'];
    $mysqli->query("INSERT INTO `evaluate` (`id`, `course`, `score`) VALUES (Null, '$course', '$score')");

注意:得分列在数据库中的类型为TEXT。

2 个答案:

答案 0 :(得分:1)

这是一个常见问题,因为大多数mysqli的介绍都不会立即报道,即使它应该是您学习的第一件事。插入任何数据库,尤其是SQL,需要仔细转义您提供的值。这些转发的方式因平台而异,但好消息是mysqli可以为您处理。

关键是使用prepared statements

$stmt = $mysqli->prepare("INSERT INTO evaluate (course, score) VALUES (?,?)");
$stmt->bind_param('ss', $_POST['course'], $_POST['val']);
$stmt->execute();

现在enable exceptions最好,这样就不会忽略任何错误。偶尔我们都会犯一些小错误,如果没有任何关于它们的警告,可能会很难找到。例外会产生很多噪音。

如果您刚开始使用PHP和数据库,您可能希望使用PDO进行评估,这明显优于mysqli,原因有很多,或者更高级别的数据库层比如DoctrinePropel使得使用数据库变得更加愉快。

答案 1 :(得分:0)

我在文本中有一个引号(')而没有转义它意味着SQL语句被错误地解释

正确的方法是,你必须始终这样做:

$score = $mysqli->real_escape_string($_POST['val']); $course = $mysqli->real_escape_string($_POST['course']); $mysqli->query("INSERT INTO评估( ID ,课程,得分)VALUES (Null, '$course', '$score')");