Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在INT数据类型中存储空字段?_Php_Mysql - Fatal编程技术网

Php 如何在INT数据类型中存储空字段?

Php 如何在INT数据类型中存储空字段?,php,mysql,Php,Mysql,如何在INT数据类型中存储空文本?每次我提交表单时,它都会给我一个值0 这是我的密码: $contact_number = $_POST['contact_num']; $contact_number1 = !empty($contact_number) ? "'$contact_number'" : "NULL"; INSERT INTO pre_enrollment(pre_en_contact_num) VALUES('$contact_number1');"; 是的,你可以删除引

如何在INT数据类型中存储空文本?每次我提交表单时,它都会给我一个值0

这是我的密码:

$contact_number = $_POST['contact_num'];

$contact_number1 = !empty($contact_number) ? "'$contact_number'" : "NULL";

INSERT INTO 
pre_enrollment(pre_en_contact_num)
VALUES('$contact_number1');";

是的,你可以删除引号。引号使其成为字符串

$contact_number1 = !empty($contact_number) ? $_POST['contact_num'] : NULL;

是的,你可以删除引号。引号使其成为字符串

$contact_number1 = !empty($contact_number) ? $_POST['contact_num'] : NULL;

由于在
$contact_number1
中已经有引号,因此在查询中不需要它们。这是在数字周围加上一组额外的引号,这是一个语法错误,并在
NULL
周围加上引号,使其成为字符串而不是NULL文本

但是,最好使用准备好的查询而不是字符串替换

$contact_number = empty($_POST['contact_num']) ? null : $_POST['contact_num'];
$stmt = mysqli_prepare($conn, "INSERT INTO pre_enrollment (pre_en_contact_num) VALUES (?)");
mysqli_stmt_bind_param($stmt, "s", $contact_number);
mysqli_stmt_execute($stmt);

准备好的语句将自动将PHP
null
转换为MySQL
null

,因为您在
$contact\u number1
中已经有引号,所以在查询中不需要它们。这是在数字周围加上一组额外的引号,这是一个语法错误,并在
NULL
周围加上引号,使其成为字符串而不是NULL文本

但是,最好使用准备好的查询而不是字符串替换

$contact_number = empty($_POST['contact_num']) ? null : $_POST['contact_num'];
$stmt = mysqli_prepare($conn, "INSERT INTO pre_enrollment (pre_en_contact_num) VALUES (?)");
mysqli_stmt_bind_param($stmt, "s", $contact_number);
mysqli_stmt_execute($stmt);

准备好的语句将自动将PHP
null
转换为MySQL
null

您不能在INT中存储文本。null是您唯一的选项,如果“contact_num”是电话号码,则您不应该使用int@nogad那么我应该使用什么呢?使用
NULL
作为NULL,不是值为
null
的字符串。电话号码是字符串,因此varchar()不能在INT中存储文本。null是唯一的选项,如果“contact_num”是电话号码,则不应使用int@nogad那么我应该使用什么呢?使用
NULL
作为NULL,而不是值为
NULL
的字符串。电话号码是字符串,所以varchar()我删除了它,但仍然给了我一个0的值。它也需要在SQL中被取消引号。参数化查询。是的,引号使其成为字符串。
empty()
是邪恶的
empty(“0”)
为真-但是
“0”
它不是空的。我删除了它,但仍然给了我一个值0。它还需要在SQL中取消引号。参数化查询。是的,引号使其成为字符串。
empty()
是邪恶的
empty(“0”)
为真-但是
“0”
它不是空的。