Secuencia de ejecución del código PHP

Estoy tratando de ejecutar algunas líneas de código php, pero parece que no se ejecutan en el orden requerido. Aquí hay un fragmento de código: -

if( !empty($_POST['val']) )
               {
                    $val = Get_Val($sid, $_POST['val'], $lnk);
                    if($val)
                    { 
                        echo "<br />Here Value : " . $val;
                    }
                    else
                    {
                        echo "Invalid Value.";
                    }
              }

Cuando hago eco del valor antes de regresar en la función Get_Val(), muestra un número positivo para un conjunto de argumentos válidos, lo que significa que la condición If es verdadera, pero cuando ejecuto el código, se ejecuta la parte Else. Aunque la salida aparece en orden, no son consistentes. Espero haber aclarado el problema. Cualquier cantidad de ayuda es apreciada. ¡Gracias! Aquí está la función Get_Val(): -

function Get_Val( $sid, $a, $link) { //verificar si el nombre ya está presente en la tabla $query = "SELECT val FROM store WHERE name = \"" . $a . "\""; //val se incrementa automáticamente en sql $resultado = mysql_query( $consulta ,$enlace ) o die( mysql_error()); if($resultado) { $recuento = mysql_num_rows($resultado); if( $count == 0 ) //inserte el nombre y el valor devuelto { $query_x = "INSERT INTO store(name) VALUES('" . $a . "')"; $resultado = mysql_query( $query_x ,$link ) or die( mysql_error()); if($resultado)//Si se inserta un nuevo nombre, devuelve el 'val' { Get_Val($sid, $a,$link); } } else { $fila = mysql_fetch_assoc( $resultado ); echo "Val en Get_Val:". $fila['valor']; return $fila['val']; } } else { echo "Ocurrió un error inesperado...!!!"; salir(0); } }

preguntado el 08 de abril de 12 a las 18:04

sube el codigo de Get_Val() -

Intenta también if(isset($val)). Está seguro Get_Val() es devolver un valor? -

asegúrese de desinfectar $ _POST ['val'], o de lo contrario, la inyección de sql es positiva -

2 Respuestas

que pasa con esto:

if( $count  Val in Get_Val : " . $row['val'];
    return $row['val'];
}

¿Está seguro de que $_POST['val'] es un valor válido que se almacena en la base de datos?

Respondido 08 Abr '12, 18:04

Lo he corregido, no pude publicarlo correctamente por primera vez. - Amrendra Oraón

después de insertar el nuevo valor, no debe usar la recursividad, está desperdiciando ciclos de CPU y una consulta sql inútil, simplemente devuelva la última identificación insertada: Vlad Balmós

Aquí hay una situación, porque no lo estoy insertando manualmente, se incrementa automáticamente, solo estoy insertando 'nombre' y 'val' se actualiza automáticamente. Incluso si traté de obtener el último 'val' en la tabla, también requiere otra consulta SQL. Por lo tanto, no se puede eliminar la consulta. Por favor, ayúdenme a obtener el 'val' recién insertado sin usar la recursividad. ¿Qué pasa si elimino la recursividad y uso otra consulta en su lugar? - Amrendra Oraón

us mysql_insert_id(), devolverá la identificación recién incrementada - Vlad Balmós

Déjame intentarlo, gracias por la ayuda hasta ahora. :-)- Amrendra Oraón

Get_Val no devuelve un valor si $count == 0. Agregue una declaración de devolución antes de la llamada recursiva. Como esto:

...
if( $count == 0 ) //insert name and the return val
{
    $query_x = "INSERT INTO store(name) VALUES('" . $a . "')";
    $result = mysql_query( $query_x ,$link ) or die( mysql_error());
    if($result)//If new name inserted then return the 'val'
    {
       return Get_Val($sid, $a,$link);
    }
}
...

Respondido el 29 de enero de 16 a las 13:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.