Я продолжаю получать ту же ошибку, когда пытаюсь отправить запрос на прием на sql - PullRequest
0 голосов
/ 14 июля 2020

Я новичок в sql и php.

Я пытаюсь отправить эту форму на сервер mysql, но я продолжаю получать эту ошибку ... я не уверен где ошибка ...

Ошибка: INSERT INTO grooming (Address, Breed, City, Email, Firstname, Lastname, NeuteredOrSpayed, PetName, PetType, PhoneNumber, State, Zip) VALUES ('123 Main St ',' Chihuahua ',' Los Angeles ',' blankemail@gmail.com ',' John ',' Doe ',' Yes ​​',' Iris ',' Dog ',' (555) 123-4568 ',' Калифорния ',' 90001 ') Неправильное целочисленное значение:' Да 'для столбца' NeuteredOrSpayed 'в строке 1

Это код:

<?php

$servername = "localhost";
$username = "root";
$password = "pwdpwd";
$dbname = "pet_shop";


$db = new mysqli($servername, $username, $password, $dbname);

if (mysqli_connect_errno()) {
echo 'Could not connect: ' . mysql_error();
} else {

function clean_data($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}


$firstname = clean_data($_POST['aptfirstname']);
$lastname = clean_data($_POST['aptlastname']);
$address = clean_data($_POST['aptaddress']);
$city = clean_data($_POST['aptcity']);
$state = clean_data($_POST['aptstate']);
$zip = clean_data($_POST['aptzip']);
$phonenumber = clean_data($_POST['aptphonenumber']);
$email = clean_data($_POST['aptemail']);
$petname = clean_data($_POST['aptpetname']);
$neutered = clean_data($_POST['aptneutered']);
$pettype = clean_data($_POST['aptpettype']);
$breed = clean_data($_POST['aptbreed']);



if ($neutered == "true") {
    $neutered = "Yes";
} else {
    $neutered = "No";
}

if ($pettype == "Cat") {
    $breed = ""; 
}


$sql = "INSERT INTO grooming (Address, Breed, City, Email, FirstName, LastName, NeuteredOrSpayed, PetName, PetType, PhoneNumber, State, Zip) VALUES ('$address', '$breed', '$city', '$email', '$firstname', '$lastname', '$neutered', '$petname', '$pettype', '$phonenumber', '$state', '$zip')";

if ($db->query($sql) === TRUE) {
    echo "success"; 
} else {
    echo "Error: " . $sql . "<br>" . $db->error;
}

$db->close();
}


?>

Если вам нужен дополнительный контекст для код формы, который я тоже могу опубликовать, это было просто много, чтобы опубликовать здесь

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Это простая ошибка типа данных, столбец, который у вас в базе данных с именем neutered, имеет тип данных Integer, а значение, которое вы пытаетесь вставить, - «Да», что абсолютно не integer.

Попробуйте помещая целые числа 1 и 0 для да и нет соответственно.

0 голосов
/ 14 июля 2020

это очень ясно .. как упомянули @ Berto99, @Pete и другие ..

столбец NeuturedOrSpayed имеет тип данных INT, поэтому в вашем коде он должен быть таким

if ($neutered == "true") {
    $neutered = 1; # it was 'Yes' --> string, need to be int, so 1
} else {
    $neutered = 0; # it was 'No' --> string, need to be int, so 0
}
...