запрос не получен: ОШИБКА: подготовленный оператор «my_query» не существует

Всем привет

Я пытаюсь вставить данные формы в мою базу данных postgreSQL в heroku через PHP, и я попробовал все решения здесь, но ничего не решило мою проблему !. Я могу подключиться к базе данных, но никакие операции мне не помогли! Эта ошибка привела меня к сумасшествию!

мой код:

<?php


$db_conn = pg_connect(" host="" port=5432 dbname="" user="" password="" ");

if(!$db_conn){
echo "Error : Unable to connect the database\n";
}


if (isset($_POST['savedata'])) {


$fn    =  $_POST ['fullname'];
$em    =  $_POST ['email'];
$ag    =  $_POST ['age'];
$ge    =  $_POST ['gender'] ;
$ci    =  $_POST ['city'] ;
$de    =  $_POST ['degree'];
$ex    =  $_POST ['experience'];
$jo    =  $_POST ['job'];



if($fn != "" and $em != "" and $ag != "" and $ge != "" and $ci != "" and $de != "" and $ex != "" and $jo != "") {


$data1="something to test";



$result = pg_prepare($db_conn, "my_query", "INSERT INTO members (fullname, email, age, gender, city, degree, experience, job) VALUES ($fn, $em, $ag, $ge, $ci, $de, $ex, $jo)");
$result = pg_execute($db_conn, "my_query", array($data1));

if (!$result){
error_reporting(E_ALL);
die("query failed".pg_last_error());
}

else {

echo "<script>";
echo "document.querySelector('.myalert').style.display = 'block';";
echo "setTimeout(function(){
document.querySelector('.myalert').style.display = 'none';
window.location.replace('home');
},5000);";
echo "</script>";

}

}

else {
echo "<script>";
echo "document.querySelector('.myalert1').style.display = 'block';";
echo "setTimeout(function(){
document.querySelector('.myalert1').style.display = 'none';
},2000);";
echo "</script>";
}

}


?>

-1

Решение

У вас есть синтаксическая ошибка в вашем коде в самой первой строке.

Parse error: syntax error, unexpected '" port=5432 dbname="' (T_CONSTANT_ENCAPSED_STRING), expecting ',' or ')

Есть также некоторые другие проблемы и странности, поэтому было проще переписать некоторые части вашего кода.

Я бы также посоветовал вам уделять немного больше внимания стилю кодирования, отступам и т. Д. Было бы значительно легче читать и помогать вам, если бы код был оформлен правильно. Руководство по стилю PSR-2 было бы хорошим местом для начала.

Итак, вот переписанный код, но нота что у меня не установлен PostgreSQL, и поэтому приведенный ниже код никак не проверяется. Это должно работать, но есть вероятность, что это не так.

Смотрите комментарии в коде для дальнейшего объяснения.

// Change these credentials according to your needs, but without any quotes
$db_conn = pg_connect("host=localhost port=5432 dbname=mydb user=user password=pwd");

if (!$db_conn) {
die("Error : Unable to connect the database\n");
}

if (isset($_POST['savedata'])) {
$member_details = array(
$_POST['fullname'],
$_POST['email'],
$_POST['age'],
$_POST['gender'],
$_POST['city'],
$_POST['degree'],
$_POST['experience'],
$_POST['job']
);
}

// Iterates through the array and checks if there's any items of which has no proper value
foreach ($member_details as $key => $val) {
if (empty($val)) {
die($key . ' is empty.');
}
}

// Query inside single quotes, also variable names must be $1, $2, $3 etc
$query = 'INSERT INTO members (fullname, email, age, gender, city, degree, experience, job) VALUES ($1, $2, $3, $4, $5, $5, $7, $8)';

$result = pg_prepare($db_conn, "my_query", $query);
$result = pg_execute($db_conn, "my_query", $member_details);

if (!$result) {
// error actions
} else {
// success actions
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]