Problema al conectarse (códigos php)

Tengo grandes problemas con mis scripts php desde que me conecté. Algunas solicitudes se ejecutan, otras no ... Pero cuando lo estaba probando con Wamp todo iba bien.

Dejame mostrarte un ejemplo:

$answer = $db -> query("SELECT ID FROM users WHERE ID='{$_SESSION['id']}';");

$data = $answer->fetch();

if ($data['ID']=="") 

{

$req= $db->prepare('INSERT INTO users(ID, etat) VALUES(:ID, :state)');

$req->execute(array(
                    'ID'=>session_id(),
                    'state' => 'NORMAL',
                    ));
}

else

{

$db->exec("UPDATE users SET state='NORMAL' WHERE ID='{$_SESSION['id']}';");

}

Aquí se ignora la condición y solo se ejecuta Insertar en. Cuando recargo mi página, la inserción en se ejecuta nuevamente en lugar del else.

¿Tiene alguna idea?

Pensé que tal vez habría sido un problema de configuración de php.ini. Pero el único php.ini que tengo que reemplazar es el de Wamp y no sé cómo adaptarlo ...

preguntado el 08 de enero de 11 a las 23:01

Por lo general, ayuda mucho cuando nombra las variables / columnas en inglés (porque hay más personas que entienden inglés que francés). No puedo ayudarte con tu problema, pero si entendí bien tu intención, podrías usar un INSERT ... ON DUPLICATE KEY UPDATE para simplificar su código a una sola consulta. -

Tienes razón, svens, ya he traducido, pero espero no haber cometido ningún otro error al traducir. Voy a echar un vistazo al uso de "en duplicado". -

¿Está seguro de lo que hay dentro de $ _SESSION ['id'], tal vez el error se produce antes de su prueba y el SQl no es falso, solo los datos de su sesión que nunca se configuran (o la sesión se pierde entre solicitudes, verifique que no tener una nueva cookie cada vez) -

2 Respuestas

$_SESSION['id'] es una variable de sesión llamada 'id'. session_id() devuelve la identificación de la sesión. Y no son iguales. SELECT ID FROM users WHERE ID='{$_SESSION['id']}'; no devuelve el mismo valor que SELECT ID FROM users WHERE ID='{session_id()}'; Necesitas insertar $_SESSION['id'] o seleccione grabar con id ==session_id().

Respondido el 09 de enero de 11 a las 02:01

Gracias Alex, pero ¿por qué funciona antes de conectarse? Y en la parte superior de mi página he escrito: $ _SESSION ['id'] = session_id () por lo que debería alterar 'id'? - manolito2459

Si tienes esa línea ($_SESSION['id']=session_id() ) deberías estar bien. Acabo de notar una diferencia entre seleccionar e insertar. Asegúrese de que el registro realmente se inserte y no reinicie la sesión después de cada carga. - a1ex07

Ok, encontré el problema en ese. De hecho, cuando dupliqué mi base de datos SQL, me había olvidado de configurar la clave principal como en la de Wamp ... No sé exactamente por qué, pero ahora funciona bien ...

¡Voy a investigar los otros problemas antes de volver a hablar contigo!

¡Muchas gracias a todos por su tiempo!

Respondido el 09 de enero de 11 a las 03:01

En este caso, debe eliminar su pregunta, o al menos aceptar su propia respuesta para que otros puedan decir que su problema ha sido resuelto. - Matt Ball

Debo esperar 2 días para aceptarlo y no quiero borrarlo. Gracias Matt - manolito2459

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