2012-07-09 4 views
0

내 코드가 -1을 표시합니다. 삽입 된 오류를 기록하고 데이터베이스에 필드를 삽입하지 않습니다. 왜이 일을하는거야?-1 레코드 삽입 됨 오류

<?php 
include("dbconnect.php"); 
$con=new dbconnect(); 
$con->connect(); 
error_reporting(E_ALL); 

if($_POST) { 

    $users_name = $_POST['name']; 
    $users_email = $_POST['email']; 
    $users_website = $_POST['website']; 
    $users_comment = $_POST['content']; 

    $users_name = htmlspecialchars($users_name); 
    $users_email = htmlspecialchars($users_email); 
    $users_website = htmlspecialchars($users_website); 
    $users_comment = htmlspecialchars($users_comment); 


$postid = $_GET['id']; 

$sSql = "INSERT INTO comments 
(post_id, name, email, website,content) 
VALUES ($postid, '$users_name', 
     '$users_email', '$users_website', '$users_comment')"; 

    mysql_query($sSql); 
    $update=mysql_affected_rows(); 
    echo "<h2>$update Record Inserted</h2><br />"; 
    echo '<h2> Your Comment is submitted</h2><br />'; 
} 
?> 

어떤 이유로 인해 설명 표가 업데이트되지 않습니다. 나는 MySQL과 PHP 프로그래밍에 익숙하지 않다. 어떤 제안이라도 나에게 많은 도움이 될 것입니다. 감사.

+3

한 가지가 제거하려고 'echo $ sSql' 그리고 당신이 원하는 쿼리가 보이는 지보십시오. – sachleen

+0

은 @sachleen이 말한 것을 완성합니다. 쿼리를 가져 와서 MySQL (PhpMyAdmin 또는 Navicat 또는 기타)에서 직접 실행하면 더 나은 오류 메시지를 얻을 수 있습니다 (Googleable처럼). –

+0

'htmlspecialchars'는이 시나리오를위한 것이 아닙니다. 고대의 mysql_ * 함수로 새로운 코드 작성을 중단하십시오. 그들은 더 이상 유지되지 않으며 커뮤니티는 [비추천 프로세스]를 시작했습니다 (http://news.php.net/php.internals/53799). 대신 준비된 구문을 배우고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/mysqli)를 사용해야합니다. 만약 당신이 배울 점이 있다면, 여기 [PDO 관련 튜토리얼] (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers). – DCoder

답변

0
  1. 먼저 삽입 더미 값.

    $sSql = "INSERT INTO comments (post_id,name,email,website,content) VALUES (100, 'anoop.pete','[email protected]', 'www.anooppete.com', 'Nice Website')"; 
    //mysql_query($sSql); 
    //$update=mysql_affected_rows(); 
    
  2. 인쇄 SQL 문 ... 웹 브라우저에서

    print($sSql); 
    
  3. 복사 SQL 문, 행이 삽입되어있는 경우의 MySQL에 MySQL을

  4. 에 $ sSql을 실행 주석 처리를 해제하고 동일한 페이지를 다시 실행하십시오.

    mysql_query($sSql); 
    $update=mysql_affected_rows(); 
    

가 실행하는 경우, 반드시 htmlspecialchars() 당신은 항상 할 수

$users_name = $_POST['name']; 
    $users_email = $_POST['email']; 
    $users_website = $_POST['website']; 
    $users_comment = $_POST['content']; 

난 당신 반드시 htmlspecialchars (추측) 일부 잘못된 문자를 반환 ...

+0

감사합니다. Anoop! 이 경우 데이터베이스에 저장하기 전에 데이터의 유효성을 검사해야합니다. 어떻게 접근합니까? – user1479431

+0

자바 스크립트를 사용하여 유효성을 검사 할 수 있습니다. –

0

-1은 쿼리가 오류를 반환했음을 의미합니다.

는 SQL 브라우저의 SQL '질의'에이 SQL 쿼리를 넣고 오류가 무엇인지 참조 : 당신의 PHP SQL 문 & 코멘트는 mysql_query 문에

INSERT INTO 
comments 
(post_id, 
name, 
email, 
website, 
content) 
VALUES 
(2, 
'name', 
'[email protected]', 
'http://', 
'comment')