Php 如何在INT数据类型中存储空字段?
如何在INT数据类型中存储空文本?每次我提交表单时,它都会给我一个值0 这是我的密码: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');"; 是的,你可以删除引
$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
转换为MySQLnull
,因为您在$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
转换为MySQLnull
您不能在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”
它不是空的。