PHP и SQL INSERT INTO с переменными не работает
Кто-нибудь знает, что не так в этом коде?
$sql = "INSERT INTO quiz.fr_fragen (fr_id, fr_frage, a1, a2, a3, a4, fr_kategorie)
VALUES ('$id', '$frage', '$a1', '$a2', '$a3', '$a4', '$kat');";
Имена таблиц на 100% правильные. Переменные выглядят так:
$id = 2002
$kat = 2
$frage = 1+1=
$a1 = 2
$a2 = 3
$a3 = 4
$a4 = 5
Ранее я создал массив из файла CSV. Переменные заполнены правильно, я дважды проверил это.
3 ответа
Оо...
использование sprintf()
по состоянию на:
$sql = sprintf("INSERT INTO quiz.fr_fragen (fr_id, fr_frage, a1, a2, a3, a4, fr_kategorie) VALUES ('%d', '%s', '%s', '%s', '%s' , '%s', '%s')", $id, $frage, $a1, $a2, $a3, $a4, $kat);
Я рекомендую узнать об этой функции, а также о санации данных.
Также между ""
Theres обозначение "{$variable1} and {$variable2}"
, более надежный тан без скобок.
Вы, вероятно, буквально вставляете $id
в вашем столе. Какой MySQL возвращает ошибку, потому что это должно быть допустимое целое число.
Вы должны посмотреть на подготовленные заявления.
$stmt = $conn->prepare("INSERT INTO quiz.fr_fragen (fr_id, fr_frage, a1, a2, a3, a4, fr_kategorie)
VALUES (?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param($id, $frage, $a1, $a2, $a3, $a4, $kat);
Или вы также можете согласиться с этим, но это НЕ лучшая практика.
$sql = "INSERT INTO quiz.fr_fragen (fr_id, fr_frage, a1, a2, a3, a4, fr_kategorie)
VALUES (" . $id . ", " . $frage . ", " . $a1 . ", " . $a2 . ", " . $a3 . ", ". $a4 . ", " . $kat . ");";
Пожалуйста, проверьте мой код
После этого, если вы столкнулись с какой-либо проблемой, следуйте ссылкам удара
1. php_mysql
<?php
$sub = 101;
$mark = 85+5;
$host = 'localhost';
$db_user = 'root';
$db_password = '';
$db = 'quiz';
$con = mysql_connect($host,$db_user,$db_password);
if($con){
if(!mysql_select_db($db)){
echo "Database not found <br/>";
die;
}
}else{
echo "DB Connect failed";
die;
}
$sql = "INSERT INTO fr_fragen (sub, mark) VALUES ('$sub','$mark')";
echo $sql . '<br/>';
if(mysql_query($sql)){
echo "Data insert successfully";
}else{
echo "Error: " . mysql_error();
}
?>