Php Ckeditor仅提交部分内容

Php Ckeditor仅提交部分内容,php,ajax,ckeditor,Php,Ajax,Ckeditor,我正在使用ajax收集要提交的ckeditor数据。问题只是第一个撇号提交到数据库之前的内容。我可能做错了什么 编辑: 我对这方面还不太熟悉,因此如果您需要查看其他内容以帮助我了解,请告诉我。听起来您在将文本数据插入数据库之前没有对其进行转义。在将数据传递到SQL查询之前,对数据使用此函数: 编辑:抱歉,这是假设您使用的是MySQL。听起来您在将文本数据插入数据库之前没有转义文本数据。在将数据传递到SQL查询之前,对数据使用此函数: 编辑:抱歉,这是假设您使用的是MySQL。与Mark建议的方法

我正在使用ajax收集要提交的ckeditor数据。问题只是第一个撇号提交到数据库之前的内容。我可能做错了什么

编辑:


我对这方面还不太熟悉,因此如果您需要查看其他内容以帮助我了解,请告诉我。

听起来您在将文本数据插入数据库之前没有对其进行转义。在将数据传递到SQL查询之前,对数据使用此函数:


编辑:抱歉,这是假设您使用的是MySQL。

听起来您在将文本数据插入数据库之前没有转义文本数据。在将数据传递到SQL查询之前,对数据使用此函数:


编辑:抱歉,这是假设您使用的是MySQL。

与Mark建议的方法相比,使用的是一种不同、更复杂且可以说更优越的方法

借用维基百科的一个例子:

<?php
$db = new mysqli("localhost", "user", "pass", "database");
$stmt = $db -> prepare("SELECT priv FROM testUsers WHERE username=? AND password=?");
$stmt -> bind_param("ss", $user, $pass);
$stmt -> execute();
?>
它将转义留给MySQL驱动程序,从而大大减少了SQL注入和意外双重转义之类的可能性


请注意,这不可能使用。您需要函数/对象或类似的东西。

正在使用一种与Mark建议的方法不同、更复杂且可以说更优越的方法

借用维基百科的一个例子:

<?php
$db = new mysqli("localhost", "user", "pass", "database");
$stmt = $db -> prepare("SELECT priv FROM testUsers WHERE username=? AND password=?");
$stmt -> bind_param("ss", $user, $pass);
$stmt -> execute();
?>
它将转义留给MySQL驱动程序,从而大大减少了SQL注入和意外双重转义之类的可能性


请注意,这不可能使用。您需要函数/对象或类似的东西。

如果我正确理解以下情况:

你已经有了一个文本区,它已经被CKeditor接管了 您正在使用Javascript读取该文本区域的内容 您正在使用AJAX将收集的内容发送到服务器 如果您提醒Javascript从textarea获取的内容,您可以看到步骤2是否成功。如果没有,请发布您的Javascript

如果步骤2是正确的,那么服务器端可能有问题,转储您的db查询以查看该问题

更新: 确保在开发时打开所有错误和通知。如果您正在做一些您不容易看到的事情,比如AJAX,请务必关注服务器的错误日志

在代码示例第2行中使用$DBconnect,然后在第4行中定义它是什么。如中所示,如果函数找不到与数据库的连接,则函数将生成错误并返回FALSE。FALSE被放入数据库,这就是进入数据库的内容


我给你的建议是:努力调试。测试你所有的假设,在每一步测试变量的值,检查它们是否具有你期望的值。使用var\u dump、print\u r、echo和die。或者,如果您想要更高级的东西,请使用我不需要的调试器。

如果我理解正确,则会出现以下情况:

你已经有了一个文本区,它已经被CKeditor接管了 您正在使用Javascript读取该文本区域的内容 您正在使用AJAX将收集的内容发送到服务器 如果您提醒Javascript从textarea获取的内容,您可以看到步骤2是否成功。如果没有,请发布您的Javascript

如果步骤2是正确的,那么服务器端可能有问题,转储您的db查询以查看该问题

更新: 确保在开发时打开所有错误和通知。如果您正在做一些您不容易看到的事情,比如AJAX,请务必关注服务器的错误日志

在代码示例第2行中使用$DBconnect,然后在第4行中定义它是什么。如中所示,如果函数找不到与数据库的连接,则函数将生成错误并返回FALSE。FALSE被放入数据库,这就是进入数据库的内容


我给你的建议是:努力调试。测试你所有的假设,在每一步测试变量的值,检查它们是否具有你期望的值。使用var\u dump、print\u r、echo和die。或者,如果您想要更高级的东西,请使用我不需要的调试器。

Mark B的解决方案简单得多,我甚至不确定问题是否在查询级别。我说过这更复杂,不是吗?-如果问题位于查询级别,根据问题描述,这至少是最可能的原因之一,那么这肯定是最安全的方法。不止一种意义。我是一个初学者,所以我想在我的水平上寻找更多的东西,谢谢你的建议。虽然Mark B的解决方案简单得多,但我甚至不确定问题是否在查询级别。我说过这更复杂,不是吗?-如果问题位于查询级别,根据问题描述,这至少是最可能的原因之一,那么这肯定是最安全的方法。不止一种意义。我是一个初学者,所以我在寻找更符合我水平的东西,谢谢你的建议。是的
我使用的是mysql,我以前试过使用这个函数,我认为这也是问题所在,但是使用它时没有提交任何数据。我在表单中有两个文本框,然后是一个ckeditor文本区域,所有其他数据都会提交到数据库中。你是说使用mysql\u real\u escape\u字符串时,数据库中根本没有输入任何数据吗?请尽可能具体,这有助于我们帮助您。是的,使用mysql\u real\u escape\u字符串没有从ckeditor文本区域插入数据,但表单中的所有其他字段都已提交,上面已经发布了代码。在您调用mysql\u real\u escape\u字符串的行中,在声明或打开数据库连接$DBconnect之前,您正在传入它。尝试将该行移到打开连接的行下方。请参阅我的更新答案,了解为什么这会导致db中“article”的字段为空。顺便说一句,如果问题的答案被更新,人们会收到通知吗?是的,我正在使用mysql,我以前尝试过使用该功能,我认为这也是问题所在,但使用它时,没有提交任何数据。我在表单中有两个文本框,然后是一个ckeditor文本区域,所有其他数据都会提交到数据库中。你是说使用mysql\u real\u escape\u字符串时,数据库中根本没有输入任何数据吗?请尽可能具体,这有助于我们帮助您。是的,使用mysql\u real\u escape\u字符串没有从ckeditor文本区域插入数据,但表单中的所有其他字段都已提交,上面已经发布了代码。在您调用mysql\u real\u escape\u字符串的行中,在声明或打开数据库连接$DBconnect之前,您正在传入它。尝试将该行移到打开连接的行下方。请参阅我的更新答案,了解为什么这会导致db中“article”的字段为空。顺便说一句,如果更新了问题的答案,人们会收到通知吗?警报成功,表单中的所有其他数据都会提交,在添加到ckeditor之前表单工作得很好我不明白,表单元素其他部分的内容最终会进入数据库,而ckeditor文本区域的内容不会?是的,没错,我知道这没有多大意义,但正如我提到的,我是一名新程序员,可能会错过一些非常简单的东西…警报成功,表单中的所有其他数据都提交良好,在添加到ckeditor之前,表单工作得非常好我不明白,表单元素的其他部分的内容最终会出现在数据库中,而ckeditor文本区域的内容不会出现?是的,没错,我知道这没有多大意义,但正如我提到的,我是一名新程序员,我可能会错过一些如此简单的东西。。。