2014-04-25 3 views
1

그래서 내가하려는 것은 mysql db에 레코드를 삽입하는 매우 기본적인 방법입니다.php mysql 삽입 작동하지 않음

내가 전에 몇 번 해본 적은 있지만, 이번에는 나에게 맞지 않는다.

그래서 코드 라인의 다음과 같은 몇 나는 사용자가 DB에있는 경우 기본적으로 (기존 사용자가 동일한 이메일을 가진 사용자입니다) 다음

1 확인을 내 코드를 표시합니다

2 사용자가 DB에 있으면 상태 코드가 409 인 HTTP 응답을 전송하여 복제를 의미합니다.

3 사용자가 정상적으로 존재하지 않는 경우 (있는 경우 어쨌든, 이것은 DB에 성공적으로 만들어진 연결을 의미하는, 완벽하게 작동 있습니다, 어떤 정확한 사용자를 검색 할 수 있었다) DB에 삽입 할

내 코드

//Checking if the user exist 
$result = mysql_query("SELECT * FROM $table_name WHERE email='".$post_email."'",$con) or die ('Error: '.mysql_error()); 
$num_rows = mysql_num_rows($result); 

if($num_rows > 0){ 
    // Close Connection 
    mysql_close($con); 

    echo "409"; 

} 
else{ 
    mysql_query("INSERT INTO samam_users (username,password,email) VALUES ('ALI','AHMED','[email protected]')",$con); 
    // Select the record 
    $user_id = mysql_insert_id(); 
    $result = mysql_query("SELECT * FROM $table_name WHERE email='".$post_email."'",$con) or die ('Error: '.mysql_error()); 
    // Close Connection 
    mysql_close($con); 

    echo "200 " . $result['username']; 
    } 

나는이 문제에 대한 해결 방법을 인터넷 검색, 내가 있기 때문에 구문 오류로했다 통해 갔다 그러나 모든 유사한 문제 (여기서 문제입니다).

제안 사항? 미리 감사드립니다 :)

+0

어떤 오류가 발생합니까? 이걸 디버깅하기 위해 당신은 무엇을 했습니까? 나는 당신의 코드에서 오류를 검사하거나 다루지 않는다. mysql_error()를 사용하여 MySQL이보고하는 에러를 확인해야한다. –

+4

[새 코드에서 mysql_ * 함수를 사용하지 마십시오.] (http://bit.ly/phpmsql). 더 이상 유지 관리되지 않으며 공식적으로 사용되지 않습니다 (https://wiki.php.net/rfc/mysql_deprecation). [빨간색 상자] (http://j.mp/Te9zIL)를 참조하십시오. 대신 [* prepared statements *] (http://j.mp/T9hLWi)에 대해 알아보고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/)를 사용하십시오. mysqli) - [이 기사] (http://j.mp/QEx8IB)는 어떤 결정을 내리는 데 도움이 될 것입니다. PDO를 선택하면 [여기는 좋은 튜토리얼입니다] (http://j.mp/PoWehJ). ** 당신은 또한 [SQL injections] (http : // stackoverflow.com/q/60174) ** –

+0

삽입 및 선택 문의 명백한 차이점은 tablename과 필드의 명시 적 표현입니다. 아마도 뭔가 잘못된 것일까 요? 당신은 테이블 스키마를 게시해야합니다. 오타는 흔하지 않습니다. – Peter

답변

2

정확한 오류 메시지는 무엇입니까? 여기에 복사해서 붙여 넣으세요.

또한 내가보기에 유일한 이상한 점은 변수 $ table_name을 사용하여 SELECT 명령을 수행하고 INSERT 명령에서 테이블 이름을 하드 코딩하는 것입니다. 어쩌면 그게 겠지? samam_users INTO

INSERT ...

그냥 거기에 같은 테이블 이름 변수를 넣어? INSERT INTO $ table_name ...

이 정보가 도움이되는지 알려주세요. :)

+0

당신의 질문은 내가 die (mysql_error());를 사용하지 않았다는 것을 상기시켜 주었다. –

+0

@dootzky 당신은 너무 예 내가 한하고 문제 Thnaks, @JohnnyFaldo을 알아 냈 :) 좋은 주말을 환영했다입니다 –

2
$sql = "INSERT INTO samam_users (username,password,email) VALUES ('ALI','AHMED','[email protected]')"; 


if(!mysql_query($sql,$con)) { 
    die(mysql_error()); 
}else { 
    echo 'inserted succesfully'; 
} 

mysql_error()는 쿼리가 작동하지 않는 이유에 대한 정보를 제공하여 디버깅 할 수있게 해줍니다. 또한

mysql_로의 *를 사용하지 않는,되지 할 것와 MySQLi 같은 훨씬 더 더 안전한 옵션이 있습니다 바람직

+0

압델 라만 - shoman 난 그냥 오류 메시지를 인쇄하는 것을 잊었다 @ 덕분에, –

0

내가 대신 따옴표로 INSERT 명령에 모든 값을 넣어야 할 생각 PDO 작은 따옴표