Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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中将行的MySQL值设置为默认值_Php_Mysql_Mysqli_Default - Fatal编程技术网

在PHP中将行的MySQL值设置为默认值

在PHP中将行的MySQL值设置为默认值,php,mysql,mysqli,default,Php,Mysql,Mysqli,Default,因此,我有一个PHP表单向数据库添加一行。如果任何不需要的字段为空,则应使用该字段的默认值 我尝试用MySQLi实现这一点,如下所示: $required = $_POST["required"]; $unrequired = isset($_POST["unrequired"])?$_POST["unrequired"]:"DEFAULT(`Unrequired`)"; $sql = $mysqli->prepare("INSERT INTO `table` (`Required`,`

因此,我有一个PHP表单向数据库添加一行。如果任何不需要的字段为空,则应使用该字段的默认值

我尝试用MySQLi实现这一点,如下所示:

$required = $_POST["required"];
$unrequired = isset($_POST["unrequired"])?$_POST["unrequired"]:"DEFAULT(`Unrequired`)";

$sql = $mysqli->prepare("INSERT INTO `table` (`Required`,`Unrequired`) VALUES (?,?)");
$sql->bind_param("is",$required,$unrequired);
$sql->execute();
但当我尝试使用
SELECT unrequired FROM table WHERE required=33
获取unrequired字段的值时,我得到了默认值(`unrequired`)而不是varchar列的默认值,int和double列的默认值为0

这个问题是由PHP还是MySQL引起的


注意:有些不需要的字段可以为空,有些不需要。那些不可为null的具有设置的默认值。int和double字段的设置默认值为1,其余字段可为空。

您不能在数据库结构中设置默认值吗。下面你可以看到一个例子

CREATE TABLE example_table
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Address varchar(255), DEFAULT 'unrequired'
City varchar(255) DEFAULT 'Unrequired'
)
当您创建这样的表时,您就可以开始了。你也可以改变你的桌子

ALTER TABLE example_table
ALTER City SET DEFAULT 'Unrequired'

好吧,我想我解决了问题

由于我使用的是预先准备好的语句,因此我在重新筛选SQL查询语句中输入的每个参数都将转换为安全字符串、整数或双精度,因此我假设像
DEFAULT(column)
这样的表达式将被重新解释为
“DEFAULT(column)”
,并将被视为字符串


虽然不是一个非常安全的解决方案,但我考虑过使用未准备好的语句,即concat每个参数并使用DEFAULT。为了使查询更安全,我将对字符串使用real\u escape\u string()。

不,这不是我要问的。此外,还提到如果列没有默认值,则会导致错误。我要问的是如何将行字段的值设置为相应列的默认值。默认值是什么(
Unrequired
)?它应该返回默认值(
无需
),并将插入到表中。您可以设置默认值而不是默认值(
Unrequired
)。PHP让我有点难过,有很多类似的函数,它们的功能几乎相同,但有些函数比其他函数更正确,尽管它们看起来是一样的,而且并不总是很直观地找到最好的函数。。。