ERROR PHP Fácil
Hola!
Servidor de PHP ni repajolera idea (estamos trabajando en elloooo). pero tenemos un cliente que le da este error
<fieldset>Warning: Supplied argument is not a valid MySQL result resource in /var/www/html/paginas/altza.com/html/sec/noti.php on line 13</fieldset>
en una web que se ha un amigo suyo y han subido a su web... alguien sabe que puede ser?
el código que tienen en esa línea es:
<code><? $link = mysql_connect("$dbhost","$dbuser","$dbpass");
mysql_connect("$dbhost","$dbuser","$dbpass");
if ($ord) { $ord=$ord; }else{ $ord="id desc"; }
$result=mysql_db_query("$dbname","select * from videos order by $ord");
while ($row=mysql_fetch_array($result)) { ?></code>
la línea 13 es la última...
Una ayudita, po favó! :D GRACIAS!!!!
xoan
Parsear ~ Interpretar
Quiere decir que si tu declaras una variable, por ejemplo, $variable = "lo_que_sea"; y luego haces un echo "esto es un ejemplo de $variable"; te mira dentro de las comillas y te cambia $variable por "lo_que_sea" (sin las comillas).
Te dejo un buen FAQ del echo.
black
vaya... gracias por las aclaraciones... me vendrán bien! estoy empezando a meter mano al PHP... y este tipo de ayudas me vienen de lujo!
Pero que significa parsear? :)
xoan
Una pequeña aclaracion:
zarate
Bueno, a primera vista esto no me cuadra que los nombres de variables (los que van precedidos de $) vayan entre comillas, ya que entonces los toma como literales.
Las toma como literales si van entre comillas simples ('$variable'), cuando van entre comillas dobles ("$variable"), PHP las parsea.
Y respecto al codigo, cuando se conecta con la base de datos (supongo que solo tendran una), lo mas conveniente es hacer, despues del mysql_connect(), un mysql_select_bd() para no tener que manejar este dato en los query sucesivos; y otra cosilla mas, al hacer $link = mysql_connect() ya estas ejecutando la orden, no hace falta volver a conectar otra vez despues (me extraña que no de error por eso...)
Y tambien es recomendable hacer los querys por partes, o sea, el query en una variable y luego ejecutarlo con mysql_query() (creo que consume menos que mysql_db_query(), pero para usarlo debes hacer primero lo que te digo de seleccionar la db).
Es decir:
<code><?
$link = @mysql_connect($host, $user, $pass);
@mysql_select_db($dbname, $link);
if ($ord)
{
$ord = $ord;
}
else
{
$ord = 'id DESC';
}
$query = "SELECT * FROM `videos` ORDER BY ".$ord;
$result = mysql_query($query);
while ($row = mysql_fetch_array($result))
{
//[sentencias]
}
?></code>
black
ups! meseolvidó decir que el problema era de ellos... que al modificar un registro habian metido la pata en algo y la consulta daba error!
GRacias de todas formas! :)
<fieldset>control sobre los scripts... no mas injection </fieldset>
estos chiste de peacheperos... :) están locos! ;)
godsea
Diria que el problema es el resultado
$result=mysql_db_query("$dbname","select * from videos order by $ord");
while ($row=mysql_fetch_array($result)) { ?>
Despues de la obtención de id del query y antes del while, comprueba el numero de lineas... si es cero no hagas un fetch :)
PD: "....by '$ord'"); (control sobre los scripts... no mas injection :P)
black
es un rollo... para montar la página tiene un montón de includes...
básicamente me vale con saber que tipo de fallo es, si es problema de algún fallo que hayan podido cometer ellos o si es problema de nuestro servicio..,
:)
black
no, no está todo... solo he pillado una parte... las variables se declaran en un include que se hace al principio del documento... lo de las comillas para las variables también me ha mosqueado a mi...
Ellos dicen que no han hecho ningún cambio... que es problema de la base de datos...
sabeis exactamente que tipo de error es ese? toy reiniciando el PC que tiene la web, cuando termine pongo el código entero... :)
juandelgado
Bueno, a primera vista esto no me cuadra que los nombres de variables (los que van precedidos de $) vayan entre comillas, ya que entonces los toma como literales.
Por otra parte, si ese es todo el código, en algún sitio falta la definición de las variables, algo como:
<code>$dbname = "nombrebd";</code>
¿Esta ahí todo el código?