Не работает процедура вызова php

Я создал базовую форму и хранимую процедуру для вставки данных. В подключение к базе данных прошло успешно, но когда я заполнил форму и я получаю эту ошибку:

-Connection failed: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'jobbob' in 'where clause' .

Вот часть моего кода.

<html>
   <head>
   <meta charset = "UTF-8">
    <title>Register</title>
    </head>
    <body>
    <?PHP
    if (isset($_POST['submit'])) {
    $username = $_REQUEST['username'];
    $password= $_REQUEST['password'];
    $forename = $_REQUEST['forename'];
    $surname = $_REQUEST['surname'];
    $address_line1 = $_REQUEST['address_line1'];
    $address_line2 = $_REQUEST['address_line2'];
    $address_line3 = $_REQUEST['address_line3'];
    $city = $_REQUEST['city'];
    $postcode = $_REQUEST['postcode'];
    $phone = $_REQUEST['phone'];
    $email = $_REQUEST['email'];    

    $servername = "localhost";

     $dbusername = "user";
     $dbpassword = "password";
     $dbname = "library";

    try {

 $conn = new PDO("mysql:host=$servername;dbname=$dbname", $dbusername,     
 $dbpassword);

 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully";   

   $sql1 = "select user_id from users where username=$username";   
 $result=$conn->query($sql1);
 if (empty($result[0])) { 

$sql  = "CALL add_user(['forename'], ['surname'], ['address_line1'], 
['address_line2'], ['address_line3'], ['city'], ['postcode'], ['phone'], 
['email'],['username'], ['password'])";
 $conn->db_query($sql);   
 $conn = null;
     } else {
echo "Username taken";
     }
    }  catch(PDOException $e) {
 echo "Connection failed: " . $e->getMessage();
 }
}
?>         

    <div>
    <form action = "registrationpage.php" method = "post">
    First Name: <input type = "text" name = "forename"> <br />
    Last Name: <input type = "text" name = "surname"> <br />
    Address_line1: <input type = "text" name = "address_line1"><br />
    Address_line2: <input type = "text" name = "address_line2"><br />
    Address_line3: <input type = "text" name = "address_line3"><br />
    City: <input type = "text" name = "city"><br />
    Postcode: <input type = "text" name = "postcode"><br />
    Phone <input type = "text" name = "phone"><br />
    Email: <input type = "text" name = "email"><br />
    Username: <input type = "text" name = "username"><br />
    Password: <input type = "password" name = "password"><br />
    Confirm Password: <input id = "password" type = "password" name = "password"> 
  <br/>
    <input type = "submit" value = "Register" name = "submit">

    </form>
    </div> 

    </body>
 </html>

Как это решить?

Проверьте свою хранимую процедуру add_user, найдите jobbob в предложении where. Судя по всему, он отсутствует или написан с ошибкой.

pritaeas 03.05.2018 15:25

@pritaeas он, вероятно, вызывает / использует столбец jobbob, которого нет в базе данных

H.J. Meijer 03.05.2018 15:26

jobbob - это имя пользователя из вашей формы? shoudnt be $ sql1 = "выберите user_id среди пользователей, где username = $ username"; что-то вроде $ sql1 = 'выберите user_id среди пользователей, где username = "$ username"'; возможно, также посмотрите подготовленные заявления

FatFreddy 03.05.2018 15:56

@ H.J.Meijer Верно то, что я имел в виду, но не смог правильно напечатать.

pritaeas 03.05.2018 15:58

Покажите, пожалуйста, структуру вашей таблицы. Ошибка четко указывает, что ваша таблица не содержит столбца jobbob.

Thomas Flinkow 03.05.2018 15:58

Да, Jobbob был тем, что я ввел в поле имени пользователя моей формы.

LJEAN 03.05.2018 16:03

затем попробуйте $ sql1 = 'выберите user_id среди пользователей, где username = "$ username"';

FatFreddy 03.05.2018 16:12

Это моя хранимая процедура

LJEAN 03.05.2018 16:13

ваш $ sql1 приводит к выбору user_id из числа пользователей, где username = jobbob; но вам нужно: выбрать user_id из числа пользователей, где username = 'jobbob'

FatFreddy 03.05.2018 16:22

Дорогие все, спасибо за все ваши комментарии. В конце концов я понял, что хранимая процедура по умолчанию разрешает вход в систему только с правами root, и поэтому, когда я вводил имя пользователя, он переопределял имя пользователя процедуры root, следовательно, сбой. Теперь все работает, и спасибо, что нашли время помочь.

LJEAN 04.05.2018 10:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
10
46
0

Другие вопросы по теме