我正在编写的程序和我试图实现的功能
好的。所以我现在写的是一个非常简单的论坛,在 Javascript 中使用 AJAX。我的部分任务是使用我的讲师用 PHP 为我们编写的 API 添加新帖子。请注意,API 和 SQL 数据库是完全本地的。
我用来添加这篇文章的功能是:
function addPosts()
{
// Add the new thread to the SQLlite database.
var treq = new Request({
url:'guestbook/control.php?action=insertPost',
'method':'post',
onSuccess: function() {
alert('win');
},
onFailure: function() {
alert('fail');
}
}).send(Object.toQueryString({
// Had to convert it to a query string because it wouldn't work as a normal object.
// These are the required values to send, to store a "post" in the database.
'name':'This is a name',
'comment':'This is a comment!'
}));
}
我知道这将每次添加相同的数据。我只是想让这该死的东西工作!
问题
发生的事情是,当调用这个函数时,我得到一个 SQL 语法错误。我很困惑,因为这意味着我的讲师的代码是错误的。在与我的讲师交谈后,他解释说当发布数据未正确发送到 PHP 代码时会发生这种情况。所以我开始使用谷歌浏览器的开发者工具来看看发生了什么,这就是我发现的:
现在对我来说,这意味着数据已成功加载到请求中,并且可以很好地传递给 PHP 文件。显然我错了。我一直在绞尽脑汁试图完成这项工作。
我知道这个 API 工作正常,因为我班上的其他人都没有遇到任何问题,而且我使用的代码实际上是抄袭了笔记中的代码,所以我有 90% 的把握是正确到。
需要注意的一点是onSuccess
密钥中的代码运行,所以我知道这在 AJAX 方面不是问题。
另一件事是,这段代码在大学里的那些计算机上工作,自从我把它带回家后,它就决定不工作了。
堆栈跟踪
致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[HY000]:一般错误:1 接近“)”:G:\Ajax Coursework\guestbook\php\database.php:134Stack trace:#0 G: \Ajax Coursework\guestbook\php\database.php(134): PDO->prepare('INSERT INTO pos...')#1 G:\Ajax Coursework\guestbook\php\class.GuestBook.php(44): DatabaseHandler->insert(Array)#2 G:\Ajax Coursework\guestbook\control.php(8): GuestBook->insert(Array)#3 G:\Ajax Coursework\guestbook\control.php(56): insertPost( )#4 {main} 在第 134 行的 G:\Ajax Coursework\guestbook\php\database.php 中抛出