我的代码分配不正确。如果在以下代码中,则只有第一个工作。
我尝试给它们分配一个或一个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个。
答案 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
}