2 votes

Erreur de requête MySQL - aucune donnée fournie pour les paramètres dans la déclaration préparée

Je suis relativement novice en matière de MySQL et j'essaie de combiner mes instructions d'insertion et de mise à jour comme je l'ai vu ailleurs. Pour le code suivant,

$query = "this is not the problem";
$ora_stmt = oci_parse($conn, $query);
$result = oci_execute($ora_stmt);
$stmt1 = $mysqli1->prepare("INSERT INTO na_dslam_card (n_alias, shelf_pt_num, card_pt_num, card_pt_description)
                            VALUES (?, ?, ?, ?)
                            ON DUPLICATE KEY UPDATE n_alias=?, shelf_pt_num=?, card_pt_num=?, card_pt_description=?");

while($row = oci_fetch_array($ora_stmt, OCI_ASSOC+OCI_RETURN_NULLS)) {
    print  $row['DSLAM'] . "," . $row['MODEL']  . "," . $row['VENDOR'] . "," . $row['BROADBAND_CIRCUIT_ID'] . "," . $row['SVC_N'] . "," . $row['PORT_ADDR_STATUS']. "," . $row['BROADBAND_CIRCUIT_ID'] . "," . $row['RACK'] . "," . $row['SHELF'] . "," .  $row['SLOT'] . "," . $row['PORT'] . "," . $row['SHELF_PT_NUMBER'] . "," .  $row['CARD_PT_NUMBER'] . "," . $row['CARD_PT_DESCRIPTION'] . "\n";
    $stmt1->bind_param("ssss", $row['DSLAM'],$row['SHELF_PT_NUMBER'],$row['CARD_PT_NUMBER'],$row['CARD_PT_DESCRIPTION']); 
    if(!$stmt1->execute())
    { 
      $tempErr = "Error setting card info: " . $stmt1->error;
      printf($tempErr . "\n");  //show mysql execute error if exists  
      $err->logThis($tempErr);
    } 
} //while

Je reçois ce message d'erreur :

Erreur de paramétrage des informations de la carte : Aucune donnée n'a été fournie pour les paramètres préparés déclaration préparée

J'ai utilisé bind_parameters, donc il ne devrait pas dire que je n'ai pas fourni les données du paramètre. Je sais que le rack peut parfois être nul, mais ne devrait-il pas simplement le mettre à null dans ce cas ? Je sais que la requête oracle fonctionne car l'instruction d'impression montre ceci :

CNVLDAT00,TA12,Ad,196,641,In Service,196,,2,,7,117,115,11L5

Alors pourquoi les paramètres ne sont pas fournis correctement ? Tout me semble correct.

J'ai regardé insérer des valeurs et je pense que je le fais bien.

Ma table ressemble à ceci :

na_dslam_card : indice n_alias numéro_pt_étagère card_pt_num card_pt_description

Merci pour toute aide...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X