Я пытаюсь вставить некоторую информацию в одну из моих таблиц db. Вот мой код:Почему мой метод INSERT INTO возвращает false?
function insertUser(){
$con = db_connect();
$response = array();
if(empty($_REQUEST['firstname'])){
$fnam = "";
}else{
$fnam = $_REQUEST['firstname'];
}
if(empty($_REQUEST['lastname'])){
$lnam = "";
}else{
$lnam = $_REQUEST['lastname'];
}
if(empty($_REQUEST['age'])){
$age = "";
}else{
$age = $_REQUEST['age'];
}
if(empty($_REQUEST['sex'])){
$sex = "";
}else{
$sex = $_REQUEST['sex'];
}
if(empty($_REQUEST['location'])){
$loc = "";
}else{
$loc = $_REQUEST['location'];
}
if(empty($_REQUEST['education'])){
$edu = "";
}else{
$edu = $_REQUEST['education'];
}
//check if username forgot
if(empty($_REQUEST['username'])){
$response[] = "Please fill username box";
}else{
$uname = $_REQUEST['username'];
//check if username is existed
$isExisted = mysqli_query($con, "SELECT * FROM tbl_users WHERE username = '$uname'");
if(mysqli_num_rows($isExisted) > 0){
$response[] = "Username is Existed";
}
}
//check if password forgot
if(empty($_REQUEST['password'])){
$response[] = "Please fill password box";
} else{
$pass = $_REQUEST['password'];
}
if(empty($response)){
//$password = getHash($password);
$res = mysqli_query($con, "INSERT INTO tbl_users (firstnam, lastname, age, sex, location, education, username, password, created_at) VALUES ('$fnam', '$lnam', '$age', '$sex', '$loc', '$edu', '$uname', '$pass', NOW())");
// user stored successfully
if ($res) {
$response[] = "user stored successfully";
}
}
echo json_encode($response);
mysqli_close($con);
}
и вот подключение к моей БД, что я могу прочитать данные с помощью этого:
function db_connect(){
$con = mysqli_connect("localhost", "root", "", "ketabha");
mysqli_set_charset($con, 'utf8');
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
return $con;
}
имя таблицы и имя каждого столбца правильно, но доза не работает! и когда я echo json_encode($res);
, он показывает false в моем браузере. не могли бы вы мне помочь, пожалуйста?
'false' означает, что запрос получил ошибку. Используйте 'echo mysqli_error ($ con)', чтобы увидеть сообщение об ошибке. – Barmar
Вместо использования 'echo json_encode ($ res);', вы должны использовать 'или die (mysqli_error ($ con))' для получения «реальной» ошибки. http://php.net/manual/en/function.error-reporting.php не повредит ни. –
Вы должны использовать 'bind_param()' вместо переменной подстановки. Вероятно, одна из переменных содержит цитату, и она вызывает синтаксическую ошибку. – Barmar