вставка PHP в базу данных значения становятся 0 - PullRequest
0 голосов
/ 24 ноября 2018

Я только начал писать PHP для школьного проекта и наткнулся на проблему.У меня есть API, который я публикую некоторые данные.Данные - это имя, идентификатор и класс датчика.Когда я пытаюсь вставить это в мою базу данных MySQL, он не вводит правильные данные.Вместо ввода фактических данных он вводит 0 в каждый столбец, кроме построения.Даже столбец состояния, который является жестко закодированной строкой.Я попробовал почти все (что я знаю из-за моих ограниченных знаний PHP), и я в тупике.

require_once "../meta.php";

$tmpdevice = clean($_POST['label']);
$device = str_replace('¥', ':', $tmpdevice);

$tmpgenericClass = clean($_POST['zwave_class_generic']);
$genericClass = str_replace('¥', ':', $tmpgenericClass);

$tmpuniqueID = clean($_POST['thingUID']);
$uniqueID = str_replace('¥', ':', $tmpuniqueID);

$status = 'Not Accepted';
$building = 303;

if ($uniqueID == "") {
    echo '{"status":"error"}';
    exit;
}
if ($device == "") {
    echo '{"status":"error"}';
    exit;
}
if ($genericClass == "") {
    echo '{"status":"error"}';
    exit;
}

$servername = DB_HOST;
$username = DB_USER;
$password = DB_PASSWORD;
$databasename = DB_NAME;

$conn = new mysqli($servername, $username, $password, $databasename);
if ($conn->connect_error) {
    die("Connection error: " . $conn->connect_error);
    exit;
}

$stmt = $conn->prepare("INSERT IGNORE INTO Actuator (UniqueID, Device, GenericClass, Status, Building) values (?,?,?,?,?)");
$stmt->bind_param("idddd", $uniqueID, $device, $genericClass, $status, $building);

if ($stmt->execute()) { 
    echo '{"status":"ok"}';
} else {
echo '{"status":"error"}';
}

$conn->close();   

?>

This is my database setup

1 Ответ

0 голосов
/ 24 ноября 2018

Проблема в том, что большинство полей являются строками (varchar), но когда вы связываете параметры, вы связываете их как числа (i - целое число, d - двойное число).

Использованиеправильные типы данных для привязки (s - строка):

$stmt->bind_param("ssssi", $uniqueID, $device, $genericClass, $status, $building);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...