我的问题是,如何编写我的代码,返回分配给我在数据库中拥有的人员的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?
不要复杂,这就足够了:
//...
$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'];
不要将结果数组转换为整数。您需要使用索引。
您还应该对参数化查询使用准备好的语句,并使用错误报告功能,以便知道何时返回错误。
$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));
}
[您需要记住,当您有一些输入要传递到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;