registro publicar poner pasos pagina insertar hacer funcionar formularios formulario enviar como colocar php mysql

php - poner - publicar formulario wordpress



Agregar 1 a un campo (7)

¿Cómo convierto las siguientes 2 consultas en 1 consulta

$sql = "SELECT level FROM skills WHERE id = $id LIMIT 1;"; $result = $db->sql_query($sql); $level = (int) $db->sql_fetchfield(''level''); $db->sql_freeresult($result); ++$level; $sql = "UPDATE skills SET level = $level WHERE id = $id;"; $result = $db->sql_query($sql); $db->sql_freeresult($result);

Lo estoy usando en un mod phpBB pero la esencia es que tomo el nivel, agrego uno y luego actualizo, parece que sería mucho más fácil y más rápido si pudiera hacerlo como una consulta.

Editar: $ id ya se ha forzado a ser un entero, por lo que no es necesario escaparse esta vez.


$ sql = "habilidades de ACTUALIZACIÓN SET level = level + 1 WHERE id = $ id";

¡Solo espero que estés desinfectando apropiadamente $ id en otro lugar de tu código!


De esta manera:

UPDATE skills SET level = level + 1 WHERE id = $id


Con PDO y consulta preparada:

$query = $db->prepare("UPDATE skills SET level = level + 1 WHERE id = :id") $query->bindValue(":id", $id); $result = $query->execute();


Mat: Eso es lo que pega de la pregunta. No ha sido editado, así que lo atribuyo a un error en Markdown. Pero, curiosamente, me he dado cuenta.

También: sí, mysql_escape_string() !


Me downmodded para esto?

$sql = "UPDATE skills SET level = level+1 WHERE id = $id"; $result = $db->sql_query($sql); $db->sql_freeresult($result);

En el caso específico de Teifion, phpBB DDL enumera ese campo particular como NOT NULL, por lo que no hay peligro de incrementar NULL.

En el caso general, no debe usar NULL para representar cero. Incrementar NULL debería dar una respuesta de NULL. Si eres el tipo de desarrollador equivocado que piensa que NULL = 0, te alejas del teclado y encuentras otro pasatiempo, solo estás haciendo la vida difícil para el resto de nosotros. Por supuesto, esta es la industria de la computación y ¿quién es nosotros para decir que estás equivocado? Si no estás equivocado, usa

$sql = "UPDATE skills SET level = COALESCE(level,0)+1 WHERE id = $id";

... pero seamos sinceros: estás equivocado. Si todos comienzan en el nivel 0, entonces su DDL debería incluir

level INT DEFAULT ''0'' NOT NULL

en caso de que los programadores se olviden de configurarlo cuando creen un registro. Si no todo el mundo comienza en el nivel 0, omita el valor predeterminado y obligue al programador a proporcionar un valor en la creación. Si algunas personas están más allá de los niveles, para quienes tener un nivel es algo sin sentido, entonces agregar uno a su nivel por igual no tiene ningún significado. En ese caso, suelte el NOT NULL del DDL.


Qué tal si:

UPDATE skills SET level = level + 1 WHERE id = $id;


prueba esto

UPDATE skills SET level = level + 1 WHERE id = $id