2013-06-23 112 views
0

对于PHP和SQL我都很新,但是我想要的是将输入到表单中的细节插入到数据库中。SQL语法错误

我写的代码作品和数据被提交到数据库中,但有几件事情是不正确的。

首先这里是代码;

<?php 

include "credentials.php"; 


function insert_post($cnhost,$cnusername,$cnpassword,$cndatabase,$titlein,$contentin,$comment_optionin) { 


    $connect = mysqli_connect($cnhost,$cnusername,$cnpassword,$cndatabase); 

if (mysqli_connect_errno($connect))  

{ 

    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 

    }else{ 

    echo "Connection Success! <br>"; 


$submitpost_query = mysqli_query($connect,"INSERT INTO blog_posts (title,content,comment_option) VALUES ('".$titlein."','".$contentin."','".$comment_optionin."')"); 

if (!mysqli_query($connect,$submitpost_query)) 
    { 
    die('Error: ' . mysqli_error($connect)); 
    }else{ 
echo "Post submitted."; 


} 
    mysqli_close($connect); 


} 
} 

$title = $_POST["title"]; 
$content = $_POST["content"]; 
$comment_option = $_POST["comment_option"]; 


insert_post($host,$username,$password,$database,$title,$content,$comment_option); 

?> 

虽然数据提交到数据库,因为我想我得到以下错误;

“错误:你在你的SQL语法错误;检查对应于你的MySQL服务器版本,在1号线附近使用‘1’正确的语法手册”

的$ comment_option变量包含值1或0,这取决于选择哪个单选按钮,因此此错误可能指的是此变量,但无论$ comment_option的值是1还是0,此SQL错误都是相同的。

我确实看到“连接成功! “在发生此错误之前,即使帖子已实际提交,也没有看到“已发布帖子”。任何想法为什么?

除了帮助我解决这个问题,如果有人能给我一些改进iv写作的一般技巧,我将非常感激。我是一个小菜,所以我确定有一些东西可以在这里改进!

非常感谢!

+0

请打印出整个查询。 'echo'INSERT INTO blog_posts(title,[...]' – silkfire

回答

0

的问题是在这里:

if (!mysqli_query($connect,$submitpost_query))

你传递一个mysqli_query结果是$submitpost_query另一个mysqli_query这是在if声明。

+0

好的感谢您的快速回复。我删除了if语句并且错误消失了!谢谢!我正在使用它来验证SQL语句是否已经工作并且数据被插入到数据库中,你会怎么建议验证这个? – Max

+1

对,'$ submitpost_query'是查询的结果,你应该测试'$ submitpost_query'是否为false或者真如'if(!$ submitpost_query) ' –

+0

对不起,没有看到我的意见之前,我提交我的。好的,谢谢你,我会尝试这个! – Max

0

问题是与代码 如果 应该不是跟随 如果($ submitpost_query!)

原因如下块(mysqli_query($连接,$ submitpost_query)!):你又正在执行返回的对象通过导致警告,无效资源mysql_queri函数,因为这个函数只有有效的sql查询或连接对象除外

+0

我这样做,因为他们已经使用,如果像W3schools - http://www.w3schools.com/php/php_mysql_insert.asp在页面底部的最后一段代码中。 请问我有什么不同吗? – Max

+0

啊,我明白了。好的谢谢,我感谢所有的帮助! – Max

0

我知道你的问题已答复,但我严重建议你在连接查询前清理POST数据。

+0

你能给我更多的信息吗?我会研究你所说的话,但会感谢你解释一些关于我在这里的代码。 – Max

+0

关于如何消毒用户输入 http://stackoverflow.com/questions/129677/whats-the-best-method-for-sanitizing-user-input-with-php 为什么你应该这样做 http: //en.wikipedia.org/wiki/SQL_injection – SkarXa