mysqli, проблема вставки php - PullRequest
0 голосов
/ 13 марта 2011

У меня есть HTML-форма, которая вызывает PHP. PHP вставляет данные в базу данных SQL. так что это часть моего php кода

$name = $_POST['name'];

$query = "INSERT INTO student (complete_name, date_birth, gender, email)
            VALUES ( '$name', '$year', '$gender', '$email_1')";

mysqli_query($link,$query) or die(mysql_error());

mysqli_close($link);

и ниже мой sql код, используйте для создания / использования базы данных

use coursework_test;

drop table if exists Student;

create table Student
(

    complete_name varchar(50) NOT NULL,
    date_birth date,
    gender varchar(10) NOT NULL,
    email varchar(50) PRIMARY KEY NOT NULL   

);

Теперь, когда я запускаю этот код, данные вставляются нормально, но поле "полное_имя" остается пустым. ненулевой. просто пусто есть идеи?

Ответы [ 3 ]

2 голосов
/ 13 марта 2011

В SQL, если для столбца задан тип varchar и значение по умолчанию не равно null, при вставке в качестве этих данных будет вставлена ​​пустая строка (""), если для этого столбца не задано значение.

Тем не менее, я бы дважды проверил и убедился, что $_POST['name'] содержит данные, которые вы ищете.

0 голосов
/ 29 октября 2016
<?php

$host=""; // Host name
$username="users"; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name="student"; // Table name
?>

<?php
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// Get values from form
$name=$_POST['name'];
$date_birth=$_POST['date_birth'];
$gender=$_POST['gender'];
$email=$_POST['email'];

// Insert data into mysql
$sql="INSERT INTO $tbl_name(name, date_birth, gender, email)VALUES('$name', $year', '$gender', '$email')";
$result=mysql_query($sql);

// if successfully insert data into database, displays message "Successful".
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='insert.php'>Back to main page</a>";
}

else {
echo "ERROR";
}


// close connection
mysql_close();
?>
0 голосов
/ 13 марта 2011

В своем HTML-коде вы неправильно назвали ввод для name.Так что проверьте название этого входа.Кроме того, некоторые браузеры будут анализировать name="name" как логическое значение HTML, так что вы можете захотеть найти другое имя для этого поля.

Тем не менее, вы должны подумать об использовании подготовленных операторов для своих запросов.В данный момент вы уязвимы для атак с использованием SQL-кода.Использовать подготовленные утверждения просто:

$stmt = mysqli_prepare("INSERT INTO student
                  (complete_name, date_birth, gender, email)
                  VALUES (?, ?, ?, ?)", mysqli_stmt_execute($stmt);link);

mysqli_stmt_bind_param($stmt, "s", $name);
mysqli_stmt_bind_param($stmt, "i", $year);
mysqli_stmt_bind_param($stmt, "s", $gender);
mysqli_stmt_bind_param($stmt, "s", $email_1);

mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...