2013-05-31 2 views
-1

이것은 반복되는 주제입니다. 그러나 누구도 만족스러운 답을 얻지 못했습니다.mysql 쿼리는 myadmin에서 작동하지만 PHP 스크립트에서는 작동하지 않습니다.

내 쿼리 내가 스크립트가 반환 $의 SQL 에코

$link = mysqli_connect($db[0],$db[1],$db[2],$db[3]); 
    if(!$link){ 
     echo mysqli_error(); 
    }else{ 
     $name = $_POST['name']; 
     $contact = $_POST['contact']; 
     $com_day = $_POST['com_days']; 
     $dept = $_POST['dept']; 
     $sql = "CALL mem_add_id('".$dept."');"; 
     $result = mysqli_query($link,$sql); 
     $new_id = mysqli_fetch_array($result); 
     if(!isset($new_id[0])){ $new_id[0] = 1;} 
     $wrk_id = $dept."-".$new_id[0]; 
     $sql = "INSERT INTO `db_workers`(`id`, `name`, `contact`, `committed_days`, `department`) VALUES ('".$wrk_id."','".$name."','".$contact."',".$com_day.",'".$dept."')"; 
     $result = mysqli_query($link,$sql); 
     if($result){ 
      echo '<script>show_messages("'.$wrk_id.'");</script>'; 
     } 
    } 

입니다 :

INSERT INTO `db_workers`(`id`, `name`, `contact`, `committed_days`, `department`) VALUES ('OB-1','aasd','123312412',5,'OB') 

내가 phpMyAdmin을이 붙여 넣기, 행이 삽입됩니다! 하지만 PHP에서 결과는 'false'를 반환합니다.

스크립트의 문제를주의하십시오.

감사합니다.

편집 : 위 쿼리는 정상적으로 작동합니다.

+0

실패한 쿼리 후 [$ link-> error] (http://php.net/manual/en/mysqli.error.php)를 확인하십시오. – Oswald

+0

BTW :'echo ' '는'INSERT' 질의가 성공할 경우에만 실행됩니다. 그것이 당신의 의도입니까? 'if (! $ result)'는 나에게 더 나은 디버깅 전략처럼 보입니다. – Oswald

+0

"명령이 동기화되지 않아이 명령을 지금 실행할 수 없습니다." –

답변

1

mysqli_connect()항상mysqli 개체를 반환합니다. 따라서 mysqli_connect()의 결과는 불린 컨텍스트에서 true으로 평가됩니다. mysqli::connect_errno을 확인하여 연결이 실제로 이루어 졌는지 확인하십시오.

+0

프로 시저를 호출하는 쿼리가 작동하고 실행됩니다. 삽입 할 사람에게만 오류가 있습니다. 하지만 오류가 있는지 확인합니다. –

+0

"echo mysqli_connect_errno();"를 추가했습니다. before - it echos '0' –

+0

그래, mysqli_query()에 대한 첫 번째 호출을 놓쳤다. 그래서 실패한 연결 시도가 오류의 원인이되지 않는다. 그럼에도 불구하고 내 대답이 유용하길 바랍니다. – Oswald

0

위의 답변에서 제공된 답변은 작동하지 않았습니다. 어쩌면 그것은 나의 오해이거나 다른 것이었지만 좋은 대안을 찾았습니다.
연결을 닫고 다시 연결하십시오. 스크립트가 작동합니다.

더 좋은 옵션이있는 경우 알려주십시오.

+0

내 마음에 일찍 왔을 수있는 다른 방법을 찾았습니다. 가져 오기/삽입 데이터로 연결 기능을 만듭니다. ' 함수 fetch_from_db ($ db_vars, $ 쿼리) {$ \t mysqli = mysqli_connect ($ db_vars [0], $ db_vars [1], $ db_vars [2], $ db_vars [3]); \t if (!$ mysqli) { \t \t return mysqli_connect_error(); \t} else { \t \t $ sql = mysqli_real_escape_string ($ query); \t \t $ sql = $ query; \t \t $ result = mysqli_query ($ mysqli, $ sql); \t \t $ get_data = mysqli_fetch_array ($ result); \t \t mysqli_free_result ($ result); \t \t mysqli_close ($ mysqli); \t \t return $ get_data; \t} } ' –

관련 문제