2016-05-31 6 views
0

PHP에서 웹 페이지 관리를위한 약간의 스크립트를 사용하고 있습니다. 항목 등록을하므로 모든 매개 변수를 가져 와서 스크립트에 보내어 INSERT를 작성합니다. 데이터베이스 (mysql). 내 코드 조각은 다음과 같습니다.PHP에서 mysql 삽입을 사용하는 데 문제가 있습니다.

//Getting the params 
    $title = $_POST["title"]; 
    $date = $_POST["date"]; 
    $hour = $_POST["hour"]; 
    $description = $_POST["description"]; 
    $link = $_POST["link"]; 
    $speaker = $_POST["speaker"]; 
    $site = $_POST["site"]; 
    $file = $_POST["file"]; 
//Link and File are optional, so I'll be using NULL instead if they're empty 
    $link = !empty($link) ? ("'".$link."'") : ("'". NULL ."'"); 
    $file = !empty($file) ? ("'".$file."'") : ("'". NULL ."'"); 
//Now I'm ready to build the query 
    $query = "INSERT INTO ".$type; 
    $query = $query . "(title,data,hour,description,link,speaker,site,file)"; 
    $query = $query . "VALUES ("; 
    $query = $query . "'" .$title."'"; 
    $query = $query . ",'".$date."'"; 
    $query = $query . ",'".$hour."'"; 
    $query = $query . ",'".$description."'"; 
    $query = $query . ",".$link; 
    $query = $query . ",'".$speaker."'"; 
    $query = $query . ",'".$site."'"; 
    $query = $query . ",".$file.")"; 
//Finally, I'll be sending the INSERT as a query using: 
    $result = mysql_query($query); 
    if(!$result) 
     echo "SQL Error" 

그래서 저는 항상 오류 상태에 빠져 있습니다. 다른 웹 페이지에 다른 스크립트를 삽입 한 상태에서 잘 작동합니다.이 스크립트가 그대로 적용됩니다. 나는 확인했습니다

  1. 로 mysql_connect()와 반환 mysql_select_db()이 확인되어
  2. 나는 INSERT에게
  3. 데이터베이스 연결을 할 수있는 보조금을 (SELECT 쿼리를 사용하여 확인)
가 사용
  • 데이터베이스 사용자

    힌트를 주시면 감사하겠습니다.

    [SOLVED] 문자열이 이스케이프되지 않았으므로 따옴표로 인해 쿼리가 중단되었습니다. 따라서 여전히 이런 문제가 발생하고 더 이상 사용되지 않는 mysql _ API를 사용하는 경우 mysql_escape_string 메소드 (확인 Escaping single quote in PHP when inserting into MySQL)가 필요할 수 있습니다.

  • +0

    더 이상 사용되지 않는'mysql_' API를 사용하여 양식 – user1234

    +2

    ** 중지 ** 테이블 구조를 입력하십시오. PreparedStatement로 mysqli_' 또는'PDO'를 대신 사용하십시오. – Jens

    +1

    mysql_error() 함수를 호출하여 에러가 무엇인지 알아보십시오. – Jens

    답변

    0

    이 줄을 사용하십시오. 따옴표는 $ 링크 및 $ 파일 ""추가 사용하지 않고 PHP 널 (null)에

    $link = !empty($link) ? $link : NULL; 
    $file = !empty($file) ? $file :NULL ; 
    

    NULL입니다. query을 실행하기 전에

    당신은 연결에 문제가

    +0

    안녕하세요, 답변 해 주셔서 감사합니다. @ Ms.Nehal에게 대답했듯이, 원래 코드에서 transcripting을 찾지 못했습니다. NULL 값을 따옴표없이 사용하고 있지만 연결 문자열의 따옴표를 추가하고 있습니다. 죄송합니다. 지금 편집 중입니다. – ytturi

    0

    PhpMyadmin에 인쇄하고 실행 해보십시오. 이 당신의 코드 라인을 변경하려고 :

    또한
    //Link and File are optional, so I'll be using NULL instead if they're empty 
        $link = !empty($link) ? ($link) : (NULL); 
        $file = !empty($file) ? ($file) : (NULL); 
    //Now I'm ready to build the query 
        $query = "INSERT INTO $type (title,data,hour,description,link,speaker,site,file) VALUES ('" .$title."','".$date."' 
          ,'".$hour."','".$description."','".$link."','".$speaker."','".$site."','".$file."')"; 
    

    , NULL 문자열로 전달되지 않습니다. 그렇지 않으면 문자열 대신 으로 처리됩니다.

    +0

    그래, 고마워. 나는이 페이지의 다른 경우에서 같은 실수를 보았다. 댓글에서 중요한 데이터를 지울 때 일부 필사적 오류가 발생했다고 생각합니다. 빈 줄/파일에 대한 내용은 다음과 같습니다. \t \t $ link =! empty ($ link)? (" '"$ 링크. "') : (" ' ". NULL."' "); \t \t $ file =! empty ($ file)? (" '". $ file. "'") : (" '". NULL. "'"); 그래서 쿼리를 보낼 때 문자열을 인쇄하면 값이 NULL 일 때 결과가 ''로 표시됩니다. – ytturi

    +0

    @yuturi, 미안하지만 당신이 말하고자하는 것은 분명하지 않습니다. 좀 더 자세하게 지정할 수 있습니까 – Nehal

    +0

    게시물을 작성할 때 오류가있었습니다. 연결이 잘 작동하고 NULL 값이 제대로 전송됩니다. – ytturi

    관련 문제