成功连接数据库后,无法正确分配PhP代码

时间:2019-07-13 08:30:00

标签: php

我的代码分配不正确。如果在以下代码中,则只有第一个工作。

我尝试给它们分配一个或一个if,但相同。

$nomClient = "";
$telClient = "";
$noClient = "";



if(($client = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false){
    $nomClient = $client["NOM_CLIENT"];
    $erreur = "";
}else{
    $erreur = "no client";

}

if(($tel = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false){
        $telClient = $tel["TEL_CLIENT"];
        $erreur = "";
    }else{
        $erreur = "no phone_number";
    }


if(($nocli = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false){
        $noClient = $nocli["NO_CLIENT"];
        $erreur = "";
    }else{
        $erreur = "no client_number";
    }

我当前的结果是显示了名称(在我的打印图中此代码未显示) 而且返回的错误是最后一个'no client_number'。

如果最后一个if是tel_client,则错误将是no_phone_number。

因此,这里基本上只考虑第一个条件。

我需要返回sql数据库的第一行,并且没有错误消息。我不确定如何为电话号码和客户号码分配我的最后2个。

1 个答案:

答案 0 :(得分:1)

oci_fetch_array()检索,而不是

  

以关联数组或数字数组的形式返回查询的下一行

因此,每次调用它并抓住一个不同的列时,它都不属于同一行。如果您获得no client_number,则意味着您有两个客户。您当前正在获取第一个的名称和第二个的电话号码。

  • 如果希望有一行(如“通过ID获取客户”中所述),则只需要第一个条件; $client会告诉您,var_dump($client);已包含所有列。您还需要修正查询,因为它返回了两行行。

  • 如果您希望有几行(如“获取所有客户”中所述),则需要循环:

    while (($client = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) !== false) {
        $nomClient = $client["NOM_CLIENT"];
        $telClient = $tel["TEL_CLIENT"];
        $noClient = $nocli["NO_CLIENT"];
        // Now do something with your data: it'll be overwritten on next iteration
    }