label{text-align:left; width:150px; display:blo-6ren">
gpt4 book ai didi

php - 我如何在 PHP 中使用 MySQL NOT NULL?

转载 作者:行者123 更新时间:2023-12-01 00:42:37 25 4
gpt4 key购买 nike

我已经使用 PHP 在 MySQL 数据库中插入值(示例代码如下):

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<style>
label{text-align:left;
width:150px;
display:block;
float:left;
clear:right;
font-size:18;}

form {
width: 30%;
margin: 0 auto;
}
</style>
<label>Name:</label><input name=name autocomplete=off><br>
<label>Date of Birth:</label><input size=2 name=dd placeholder=dd> / <input size=2 name=mm placeholder=mm> / <input size=6 name=yyyy placeholder=yyyy><br>
<label>Time of Birth:</label><input name=tob placeholder="hh : mm : ss"><br>
<label>City:</label><input name=city><br><br>
<center><input type=submit value=Save></center>
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST"){
$servername = "localhost";
$username = "userame";
$password = "password";
$dbname = "myDB2";
if(empty($_POST["name"])){ echo "Name is Required<br>";}
else {
$name = $_POST["name"];
}
var_dump($name);
$tob = $_POST["tob"];
$city = $_POST["city"];
$dd = $_POST["dd"];
$mm = $_POST["mm"];
$yyyy = $_POST["yyyy"];

$dob = "$yyyy-$mm-$dd";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

//Inserting Data
$sql = "INSERT INTO Person
VALUES('$name','$dob','$tob','$city')";
if ($conn->query($sql) === TRUE) {
echo "<br>New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
}
?>

AND COLUMN Name 设置为 varchar(60) NOT NULL UNIQUE 数据类型和约束。


尽管

  • NOT NULL Name 列的约束,以及

  • if(empty($_POST["name"])){ echo "Name is Required";}
    别的 {
    $name = $_POST["名字"];
    }

当我插入提交表单而没有在表单的名称输入中输入任何值时,我收到以下消息(根据代码)

Name is RequiredNULLNew record created successfully

我的数据库输出如下:

screen0

在这里你可以看到 var_dump($name)$nameNULL 但仍然是 MySQL 数据库为 Name 列接受这个值!


所以,我的问题是 NOT NULLHow can I use MysQL NOT NULL with PHP? 用于插入数据在表格的帮助下?

最佳答案

您需要将 PHP 的 null 适本地转换为 SQL 的 NULL 类型。当您在 PHP 中进行简单的字符串插值时:

"INSERT INTO foo VALUES ('$bar')"

其中 $barnull,结果为:

INSERT INTO foo VALUES ('')

MySQL 认为它是一个空字符串,它不是 NULL,所以没问题。

你必须做这样的事情:

$value = null;
if ($value === null) {
$bar = 'NULL';
} else {
$bar = "'$value'";
}
$query = "INSERT INTO foo VALUES ($bar)";

这里的结果是这两个之一:

INSERT INTO foo VALUES (NULL)
INSERT INTO foo VALUES ('baz')

然后 MySQL 会将 null 视为 NULL

但是,如果您要在 PHP 中进行如此深入的研究,您显然可以在值为空时不触发查询,而不是触发查询并让 MySQL 由于约束而失败。

您还需要learn about SQL injection .

关于php - 我如何在 PHP 中使用 MySQL NOT NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28390914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com