$ result始终返回1,而不是数据库中的通缉ID

问题描述 投票:-1回答:3

我的问题是,如何编写我的代码,返回分配给我在数据库中拥有的人员的ID,而不是我不知道的1-返回。

Opiekun Prawny:<select id="text_box_od" name="fullname_opiekun" >
<?php   
while($rows = $resultimie->fetch_assoc())
{
$full_name_opiekun = $rows['full_name_opiekun'];    
echo "<option value='$full_name_opiekun'>$full_name_opiekun</option>";
}
?>
</select>
<?php

    $con=mysqli_connect('localhost','root','','aplikacja_kolonijna');
    if(!$con)
    {
        echo 'Data base not found';
    }


    $fullname_opiekun = $_POST['fullname_opiekun'];

    $check = "SELECT id_opiekun FROM opiekun where concat(imie_opiekun,' ',nazwisko_opiekun,' - ',pesel_opiekun) like '$fullname_opiekun'";
    $query =  mysqli_query($con,$check);

    $result = intval(mysqli_fetch_row($query));


    echo $result;
    echo $fullname_opiekun;

实际上我要打的人是“ Kazimierz Kowalczyk 14212312312”这是我在数据库中拥有的人,但ID为3。

我的代码,而不是返回3,当我检查echo $result;时,总是返回1,现在我有了想法,如何使其像我想要的那样工作。

[当我检查echo $full_name_opiekun;时,它告诉我我的SELECT有效,并返回给我“ Kazimierz Kowalczyk 14212312312” ...为什么我无法获得正确的ID?

php mysql mysqli fetch
3个回答
-1
投票

不要复杂,这就足够了:

//...
$check = "SELECT id_opiekun FROM opiekun where concat(imie_opiekun,' ',nazwisko_opiekun,' - ',pesel_opiekun) like '$fullname_opiekun'";
$query =  mysqli_query($con,$check);

$result = mysqli_fetch_row($query);
echo $result[0];  // as `fetch_row` returns 0-indexed array

// example to fetch associative array:
//$result = mysqli_fetch_assoc($query);
//echo $result['id_opiekun'];

0
投票

不要将结果数组转换为整数。您需要使用索引。

您还应该对参数化查询使用准备好的语句,并使用错误报告功能,以便知道何时返回错误。

$fullname_opiekun = $_POST['fullname_opiekun'];
$check = "SELECT id_opiekun FROM opiekun where concat(imie_opiekun,' ',nazwisko_opiekun,' - ',pesel_opiekun) like ?";
if ($stmt = mysqli_prepare($con, $check)) {
    mysqli_stmt_bind_param($stmt, "s", $fullname_opiekun);
    mysqli_stmt_bind_result($stmt, $id_opiekun);
    mysqli_stmt_fetch($stmt);
    echo $id_opiekun;
    mysqli_stmt_close($stmt);
} else {
    printf("Error message: %s\n", mysqli_error($con));
}

0
投票

[您需要记住,当您有一些输入要传递到SQL中时,必须使用准备好的语句并绑定参数。如果使用准备好的语句,则要从结果中获取单个值,只需使用$stmt->bind_result($yourVariable),然后使用$stmt->fetch()

我已经修复了您的代码,并打开了错误报告功能。您应该始终确保它已打开。

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$con = mysqli_connect('localhost', 'root', '', 'aplikacja_kolonijna');
$con->set_charset('utf8mb4'); // always set the charset

$fullname_opiekun = $_POST['fullname_opiekun'];

// Execute the query
$check = "SELECT id_opiekun FROM opiekun where concat(imie_opiekun,' ',nazwisko_opiekun,' - ',pesel_opiekun) like ?";
$stmt = $con->prepare($check);
$stmt->bind_param('s', $fullname_opiekun);
$stmt->execute();

// Bind the first column as a result
$stmt->bind_result($result);
$stmt->fetch(); // Fetch the value

echo $result;
echo $fullname_opiekun;
© www.soinside.com 2019 - 2024. All rights reserved.