Programación Web y Scripting > PHP
Error En Update
gokufast:
Este el cuadro del problema, tengo un formulario en el cual el socio puede cambiar su contraseña ingresando la que tenia previamente.
aca esta mi formulario:
<!--html--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>HTML </td></tr><tr><td id='CODE'><!--html1--><form method="GET" action="cambiar_pass.php" name="cambiar_pass">
<tr>
<th><strong><span class="style2">*</span> codigo Socio: </strong></th>
<td><input type="text" name="nombre" size="20"><br><br></td>
</tr>
<tr>
<th><strong><span class="style2">*</span> codigo actual: </strong></th>
<td><input type="text" name="codigo_anterior" size="20"><br><br></td>
</tr>
<tr>
<th>codigo nuevo: </strong></th>
<td><input type="text" name="codigo_nuevo" size="20"><br><br></td>
</tr>
<tr>
<th>repetir codigo anterior: </strong></th>
<td><input type="text" name="codigo_nuevo2" size="20"></td>
</tr>
<br><br>
<tr>
<td><input type="submit" name="enviar" value="Enviar"></td>
<td><input type="reset" name="cancelar" value="Borrar"></td>
</tr>
</form>
<!--html2--></td></tr></table><div class='postcolor'><!--html3-->
y me lleva al siguiente PHP (cambiar_pass.php):
<!--php1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>PHP </td></tr><tr><td id='CODE'><!--ephp1--><code>[color= #000000]
[color= #0000BB]<?php
[/color][color= #007700]include([/color][color= #DD0000]"conex_2.php"[/color][color= #007700]);
[/color][color= #0000BB]$link[/color][color= #007700]=[/color][color= #0000BB]Conectarse[/color][color= #007700]();
[/color][color= #0000BB]$nombre[/color][color= #007700]=[/color][color= #0000BB]$_GET[/color][color= #007700][&[/color][color= #FF8000]#39;nombre'];
[/color][color= #0000BB]$codigoSocio [/color][color= #007700]= [/color][color= #0000BB]$_GET[/color][color= #007700][&[/color][color= #FF8000]#39;codigo_anterior'];
[/color][color= #0000BB]$codigoNuevo [/color][color= #007700]= [/color][color= #0000BB]$_GET[/color][color= #007700][&[/color][color= #FF8000]#39;codigo_nuevo'];
[/color][color= #0000BB]$codigoRepeticion [/color][color= #007700]= [/color][color= #0000BB]$_GET[/color][color= #007700][&[/color][color= #FF8000]#39;codigo_nuevo2'];
[/color][color= #007700]if([/color][color= #0000BB]strcmp[/color][color= #007700]([/color][color= #0000BB]$codigoNuevo[/color][color= #007700],[/color][color= #0000BB]$codigoRepeticion[/color][color= #007700]) == [/color][color= #0000BB]0[/color][color= #007700])
{
[/color][color= #0000BB]$result[/color][color= #007700]=[/color][color= #0000BB]mysql_query[/color][color= #007700]([/color][color= #DD0000]"
UPDATE auth
SET pass = '$codigoNuevo'
WHERE name='$nombre'"[/color][color= #007700],[/color][color= #0000BB]$link[/color][color= #007700]);
}
[/color][color= #0000BB]mysql_free_result[/color][color= #007700]([/color][color= #0000BB]$result[/color][color= #007700]);
[/color][color= #0000BB]mysql_close[/color][color= #007700]([/color][color= #0000BB]$link[/color][color= #007700]);
[/color][color= #0000BB]?>[/color]
[/color]
</code><!--php2--></td></tr></table><div class='postcolor'><!--ephp2-->
pero cada que la ejecuto me sale el siguiente error]Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in
C:\xampp\htdocs\San.Andres7\Alvaro\cambiar_pass.php on line 34
[/quote]
(mi linea 34 es: mysql_free_result($result);)
Pero me cambia la contraseña!!!
espero que me puedan ayudar
Saludos
Avalon:
Lo que ocurre es que cuando haces un UPDATE, mysql_query no retorna un identificador de resultado sino que retorna simplemente TRUE o FALSE. Por lo tanto no puedes hacer un mysql_free_result después de un UPDATE porque no hay ningún resultado que liberar de memoria.
Salu2,
Avalon
gokufast:
entonces podria ponerlo en un IF?
-DriverOp-:
Simplemente no uses mysql_free_result() ya que no se aplica a sentencias UPDATE.
F_Tanori:
Exactamente, lo que dicen Avalon y -DriverOp-.
Ademas de eso tambien puedes usar @ para evitar que alguna funcion devuelva error
ejemplo:
--- Código: Text ---@mysql_free_result($result);
Aunque como acertadamente te mencionan no es necesario en este caso
Saludos
Navegación
[#] Página Siguiente
Ir a la versión completa