Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysqli查询没有结果_Php_Mysql_Mysqli_Prepared Statement - Fatal编程技术网

Php Mysqli查询没有结果

Php Mysqli查询没有结果,php,mysql,mysqli,prepared-statement,Php,Mysql,Mysqli,Prepared Statement,我在mysqli prepare查询中遇到了一个问题,我无法找出问题所在 在phpmyadmin中,我正在编写这个查询 SELECT `country_id` FROM `oa_country` WHERE `name` = "Ελλάδα" 我得到了一个成功的结果 当我尝试使用mysqli prepare语句执行此操作时,我得到一个错误 function getCountryId($country) { print($country); \\prints "Ελλάδα" or a

我在mysqli prepare查询中遇到了一个问题,我无法找出问题所在

在phpmyadmin中,我正在编写这个查询

SELECT `country_id` FROM `oa_country` WHERE `name` = "Ελλάδα"
我得到了一个成功的结果

当我尝试使用mysqli prepare语句执行此操作时,我得到一个错误

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
)
奇怪的是,它曾经工作过,但突然停止了,我无法解释为什么

另外,所有插入都与mysqli+prepare语句一起使用。 像这样的查询停止了工作

更新1。


我在我的类上面记录了这个错误

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
现在我得到了这个错误

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
变量下面,我将字符集设置为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.
}

看起来像是charset问题


尝试设置mysqli\u set\u字符集

可能尝试设置mysqli\u set_charset@bxN5我想这和charset有关。查看更新的问题@bxN5好的,我正确设置了字符集,它工作了。如果你想回答,我会接受:)那太酷了:)