whereraw multiple form dates consultas php mysql pdo

php - multiple - Actualizar consulta con PDO y MySQL



laravel select form (3)

Esto no tiene nada que ver con el uso de PDO, es solo que está confundiendo INSERTAR y ACTUALIZAR.

Aquí está la diferencia:

  • INSERT crea una nueva fila. Supongo que realmente quieres crear una nueva fila.
  • UPDATE cambia los valores en una fila existente, pero si esto es lo que estás haciendo, probablemente deberías usar una cláusula WHERE para restringir el cambio a una fila específica, porque el valor predeterminado es que se aplica a cada fila.

Entonces esto probablemente hará lo que quieras:

$sql = "INSERT INTO `access_users` (`contact_first_name`,`contact_surname`,`contact_email`,`telephone`) VALUES (:firstname, :surname, :email, :telephone); ";

Tenga en cuenta que también he cambiado el orden de las columnas; el orden de sus columnas debe coincidir con el orden de los valores en su cláusula VALUES.

MySQL también admite una sintaxis alternativa para INSERT:

$sql = "INSERT INTO `access_users` SET `contact_first_name` = :firstname, `contact_surname` = :surname, `contact_email` = :email, `telephone` = :telephone ";

Esta sintaxis alternativa se parece un poco más a una instrucción UPDATE, pero crea una nueva fila como INSERT. La ventaja es que es más fácil hacer coincidir las columnas con los parámetros correctos.

Intento escribir una consulta de actualización solo con PDO. ¿No puedo ejecutar mi código?

try { $conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb); $conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "UPDATE `access_users` (`contact_first_name`,`contact_surname`,`contact_email`,`telephone`) VALUES (:firstname, :surname, :telephone, :email); "; $statement = $conn->prepare($sql); $statement->bindValue(":firstname", $firstname); $statement->bindValue(":surname", $surname); $statement->bindValue(":telephone", $telephone); $statement->bindValue(":email", $email); $count = $statement->execute(); $conn = null; // Disconnect } catch(PDOException $e) { echo $e->getMessage(); }


Su sintaxis de actualización es incorrecta. Verifique la sintaxis de actualización para la sintaxis correcta.

$sql = "UPDATE `access_users` set `contact_first_name` = :firstname, `contact_surname` = :surname, `contact_email` = :email, `telephone` = :telephone";


  1. Tu sintaxis de UPDATE es incorrecta
  2. Probablemente quisiste actualizar una fila, no todas, así que tienes que usar la cláusula WHERE para apuntar a tu fila específica

Cambio

UPDATE `access_users` (`contact_first_name`,`contact_surname`,`contact_email`,`telephone`) VALUES (:firstname, :surname, :telephone, :email)

a

UPDATE `access_users` SET `contact_first_name` = :firstname, `contact_surname` = :surname, `contact_email` = :email, `telephone` = :telephone WHERE `user_id` = :user_id -- you probably have some sort of id