A ver si alguien puede ver el problema porque yo no lo visualizo. Estoy tratando de añadir municipios que se relacionan con una provincia ya creada con anterioridad. Luego de verificar que el municipio no está en el sistema localizo el id de la provincia y creo el nuevo municipio con estos datos (id_provincia y nombre del municipio).
if ($existe == FALSE){
$id_provincia = db_query('SELECT id_provincia FROM {provincia} WHERE nom_provincia = :nom_provincia' , array(':nom_provincia' => $provincia));
$datos = array('id_provincia' => $id_provincia , 'nom_municipio' => $municipio);
drupal_write_record('municipio' , $datos);
drupal_set_message('El municipio ha sido añadido al sistema.');
}
A la hora de almacenarlo lo hace pero siempre colocando como id de la provincia el número 1 sin importar cual seleccione y me muestra este error:
Notice: Object of class DatabaseStatementBase could not be converted to int in drupal_write_record() (line 7123 of C:\wamp\www\recursos_humanos\includes\common.inc).
Aparentemente el problema viene a la hora de hacer la consulta, que debe devolver el único entero con que se trabaja.
Attachment | Size |
---|---|
tablas.png | 3.87 KB |
Comments
db_query te retorna un
db_query te retorna un objeto, puedes ver la documentación aquí https://api.drupal.org/api/drupal/includes%21database%21database.inc/fun...
En los comentarios ponen ejemplos que te van a servir.
por ejemplo:
<?php
// Agregar el metodo fetchField();
$id_provincia = db_query('SELECT id_provincia FROM {provincia} WHERE nom_provincia = :nom_provincia' , array(':nom_provincia' => $provincia))->fetchField();
// Recomiendo ver si $id_provincia realmente es el valor que necesitas.
print_r($id_provincia);
?>
Saludos
Muchas gracias.
Gracias. Aparte del fetchField() tenía también un problema a la hora de tomar la información del select.