2017-03-04 8 views
0

mysqli 준비 쿼리에 문제가있어 무엇이 잘못되었는지 알 수 없습니다. phpMyAdmin을에서Mysqli 쿼리 결과가 없습니다

내가이 쿼리

SELECT `country_id` FROM `oa_country` WHERE `name` = "Ελλάδα" 

을 쓰고 있어요 그리고 난 성공적인 결과를 얻을.

enter image description here

는 내가 mysqli와 내가 오류가 문을 준비 그렇게하려고하면.

function getCountryId($country) { 
    print($country); \\prints "Ελλάδα" or anything else, even countries in latin letters. 
    $db = mysqli_connect(DB_HOSTNAME,DB_USERNAME,DB_PASSWORD,DB_DATABASE); 
    $result = mysqli_prepare($db, "SELECT `country_id` FROM `oa_country` WHERE `name` = ? ;"); 
    mysqli_stmt_bind_param($result, 's', $country); 
    mysqli_stmt_execute($result); 
    mysqli_stmt_bind_result($result, $countcountry); 
    print_r($result);\\ see below. 
    while(mysqli_stmt_fetch($result)) 
     { 
      $countryid = $countcountry; 

     } 
    mysqli_stmt_close($result); 
    mysqli_close($db); 

    echo $countryid; \\undefined variable countryid 
    return $countryid; 
} 

Print $ result는 이러한 데이터를 인쇄합니다.

mysqli_stmt Object 
(
    [affected_rows] => -1 
    [insert_id] => 0 
    [num_rows] => 0 
    [param_count] => 1 
    [field_count] => 1 
    [errno] => 0 
    [error] => 
    [error_list] => Array 
     (
     ) 

    [sqlstate] => 00000 
    [id] => 1 
) 

이상한 것은 작동하는 데 사용되는 것이지만 갑자기 멈추었으며 이유를 설명 할 수 없습니다!

P. 모든 인서트는 mysqli + prepare 문과 함께 작동한다. 다음과 같은 검색어가 작동하지 않습니다.

나는 내 수업

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 

지금은이 오류가 이상이 오류 로깅을 수행 한 1


업데이트.

Fatal error: Uncaught exception 'mysqli_sql_exception' with message 'Column 'country_id' cannot be null' in /some/url/lib/registerClass.php:49 
Stack trace: 
#0 /some/url/lib/registerClass.php(49): mysqli_stmt_execute(Object(mysqli_stmt)) 
#1 /some/url/register.php(34): RegisterLibrary->Address(21267, 'kapa\n', '\xCE\x9D\xCE\xAC\xCF\x84\xCF\x83\xCE\xB9\xCE\xBF\xCF\x82', 'oriste', 'pws', '123123', 'asdasd', '4121sadsa', 'sadas', '13322', '\xCE\x95\xCE\xBB\xCE\xBB\xCE\xAC\xCE\xB4\xCE\xB1', '\xCE\x91\xCF\x84\xCF\x84\xCE\xB9\xCE\xBA\xCE\xAE') 

그리고 아래

$db 변수 i는 UTF8에 캐릭터를 설정.

function getCountryId($country) { 
    $db = mysqli_connect(DB_HOSTNAME,DB_USERNAME,DB_PASSWORD,DB_DATABASE); 
    mysqli_set_charset($db, 'utf8'); 
    if ($stmt = mysqli_prepare($db, "SELECT country_id FROM oa_country WHERE name=?")) { 

     /* bind parameters for markers */ 
     mysqli_stmt_bind_param($stmt, "s", $country); 

     /* execute query */ 
     mysqli_stmt_execute($stmt); 

     /* bind result variables */ 
     mysqli_stmt_bind_result($stmt, $countryidr); 
     $thecountryid = $countryidr; 
     echo $thecountryid; //no echo. 
     /* fetch value */ 
     mysqli_stmt_fetch($stmt); 
     /* close statement */ 
     mysqli_stmt_close($stmt); 

    } 
    return $thecountryid; //no return. 
} 
+0

어쩌면 mysqli_set_charset이 – bxN5

+0

bxN5 @ 내가 그 다음 캐릭터 셋과 관련이있다 생각 설정하려고합니다. 업데이트 된 질문을 참조하십시오! –

+0

@ bxN5 ok 나는 charset을 올바로 설정했고 제대로 작동했다. 당신이 그것에 대답하고 싶다면 그것을 받아 들일 것입니다 :) –

답변

1

이 캐릭터 세트의 문제처럼 설정

시도를 보이는 mysqli_set_charset