Я создал базовую форму и хранимую процедуру для вставки данных. В подключение к базе данных прошло успешно, но когда я заполнил форму и я получаю эту ошибку:
-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>
Как это решить?
@pritaeas он, вероятно, вызывает / использует столбец jobbob, которого нет в базе данных
jobbob - это имя пользователя из вашей формы? shoudnt be $ sql1 = "выберите user_id среди пользователей, где username = $ username"; что-то вроде $ sql1 = 'выберите user_id среди пользователей, где username = "$ username"'; возможно, также посмотрите подготовленные заявления
@ H.J.Meijer Верно то, что я имел в виду, но не смог правильно напечатать.
Покажите, пожалуйста, структуру вашей таблицы. Ошибка четко указывает, что ваша таблица не содержит столбца jobbob.
Да, Jobbob был тем, что я ввел в поле имени пользователя моей формы.
затем попробуйте $ sql1 = 'выберите user_id среди пользователей, где username = "$ username"';
Это моя хранимая процедура
ваш $ sql1 приводит к выбору user_id из числа пользователей, где username = jobbob; но вам нужно: выбрать user_id из числа пользователей, где username = 'jobbob'
Дорогие все, спасибо за все ваши комментарии. В конце концов я понял, что хранимая процедура по умолчанию разрешает вход в систему только с правами root, и поэтому, когда я вводил имя пользователя, он переопределял имя пользователя процедуры root, следовательно, сбой. Теперь все работает, и спасибо, что нашли время помочь.






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