J'ai une configuration avec Apache24, l'environnement php et la base de données postgresql. J'essaie de remplir certaines colonnes (pas toutes) dans la table db avec des valeurs, mais cela ne fonctionne pas comme je le pensais.pg_query INSERT INTO ne fonctionne pas
je reçois l'erreur suivante/avertissement et db est pas remplie: Warning: pg_query(): Query failed: ERREUR: erreur de syntaxe à ou près de "c329a92850f6d539dd376f4816ee2764517da5e0235514af433164480d7a" LINE 1: ... mot, sel) VALUES (DEFAULT , [email protected], per, 8254c329a92850 ...^dans C: \ Utilisateurs \ Public \ Server \ Apache24 \ htdocs \ eMe \ newuser.php sur la ligne 34
Tout support sur ce point est très apprécié. recherché pour des questions similaires, mais pas été en mesure d'interpréter les réponses dans mon contexte.
<?php
# Registration form input to postgresql user table in myDB
session_start();
# Retrieve data from input form
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
# Concatenate and hash password with salt
require_once(dirname(__DIR__).'\eMe\saltgenerator.php');
global $randString;
#$randString = pg_escape_string($randString);
$isalt = pg_escape_string($randString);
$saltandpassword = $isalt. $password;
$hashedpassword = hash('sha256', $saltandpassword, false);
$username = pg_escape_string($username);
$email = pg_escape_string($email);
$hashedpassword= pg_escape_string($hashedpassword);
# Insert data into Postgresql database
# INSERT INTO table_name (column1, column2, column3 .....) VALUES (value1, value2, value3....)
include_once(dirname(__DIR__).'\eMe\config.php');
$query = "INSERT INTO users (userid, mailaddress, username, userpassword, salt) VALUES (DEFAULT, $email, $username, $hashedpassword, $isalt)";
#$result =
#pg_query_params($query);
pg_query($query);
?>
J'ai essayé d'inclure des citations et backtick quotes comme décrit sur ce link mais cela ne résout pas le problème. L'erreur/avertissement est légèrement différent si:
Warning: pg_query(): Query failed: ERREUR: erreur de syntaxe à ou près "`" LINE 1: INSERT INTO utilisateurs (userid
,` mailaddress`, `username`,` utilisez ...^dans C: \ Utilisateurs \ Public \ Serveur \ Apache24 \ htdocs \ eMe \ newuser.php sur la ligne 30
Possible duplicate of [Quand utiliser des guillemets simples, des guillemets doubles et des guillemets dans MySQL] (https://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double-quotes -and-backticks-in-mysql) – aynber
Je recommande vraiment de passer à PDO, qui peut interagir avec pgsql . Avec les instructions préparées et la liaison des paramètres, vous n'aurez plus jamais à vous soucier des problèmes de citation, et vous n'aurez pas besoin d'échapper à vos valeurs. – aynber
Merci pour le conseil. Je vois si je parviens à utiliser PDO. Je trouve un peu difficile de comprendre la syntaxe/configuration – om78