2014-11-12 2 views
-3

У меня есть следующий код:Почему mysql_fetch_array не возвращает никакого значения?

$q="select servicio_id from servicio where empresa_prestadora='".$empresa1."' and tipo_servicio='".$serv."'"; 
$emp_bus=mysql_query($q,$conexion) or die ("Error en insercion de recibo: ".mysql_error()); 
$res_recibo=mysql_fetch_array("emp_bus"); 

if($res_recibo){ 
$reciboins=mysql_query("insert into recibo (cod_recibo,fecha_recibo,valor,servicio_id) values ('".$codigo."','".$fecha."','".$costo."','".$res_recibo[0]."')") or die ("Error en insercion de recibo: ".mysql_error()); 
echo "Recibo agregado!"; 
}else echo "<b>Empresa no encontrada!</b>"; 

Я попробовал запрос в MySQL Workbench (точно так же, что хранится ип $ д), и она работает perfecty отлично, но когда я echo res_recibo[0], не отображается ничего и не подтверждает состояние if.

Кроме того, в PHP я получаю это предупреждение:

Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in C:\xampp\htdocs\ProyectoBases\menu_empresa.php on line 80 

Я был бы признателен, если кто-то может помочь мне, чтобы посмотреть, что случилось.

+0

** Danger **: вы используете [** устаревший ** API баз данных] (http://stackoverflow.com/q/12859942/19068) и должны использовать [современную замену] (http: // php.net/manual/en/mysqlinfo.api.choosing.php). Вы также уязвимы для [SQL-инъекций] (http://bobby-tables.com/) **, что современный API упростит [защиту] (http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php). – Quentin

ответ

1

Сообщение об ошибке сообщает вам, в чем проблема: первым аргументом mysql_fetch_array должен быть объект результата. Вы передаете ему строку (используя строковый литерал).

Ваш код:

$res_recibo=mysql_fetch_array("emp_bus"); 

"emp_bus", очевидно, строка.

Вы хотите $emp_bus не "emp_bus".

Смежные вопросы