Php 如何在Mysql中将对象属性设置为null
我正在上传一个对象列表到MySQL。 有些对象不包含相同数量的变量。比如说Php 如何在Mysql中将对象属性设置为null,php,mysql,json,Php,Mysql,Json,我正在上传一个对象列表到MySQL。 有些对象不包含相同数量的变量。比如说 Objectt1 { property1 property 2 } Objectt2 { property1 property2 property3 } Objectt3 { property1 } 我的问题是mysql中的Object3被赋予了property2和property3,而不是NULL。该值是从Object2获取的。如何使对象3的Property2和property3为空?php代码如下:(我想我理解
Objectt1 {
property1
property 2
}
Objectt2 {
property1
property2
property3
}
Objectt3 {
property1
}
我的问题是mysql中的Object3被赋予了property2和property3,而不是NULL。该值是从Object2获取的。如何使对象3的Property2和property3为空?php代码如下:(我想我理解它为什么这样做,因为变量已经在循环的前一次运行中设置好了。但是我不知道如何修复它。)
将
null
分配给每个迭代中缺少的属性,以便前一个值不会绑定到查询:
foreach($data as $row){
$ID = $row['id'];
$prop1 = isset($row['prop1'])? $row['prop1']: null;
$prop2 = isset($row['prop2'])? $row['prop2']: null;
$prop3 = isset($row['prop3'])? $row['prop3']: null;
$result = $createworkoutquery->execute();
...
}
将
null
分配给每个迭代中缺少的属性,以便前一个值不会绑定到查询:
foreach($data as $row){
$ID = $row['id'];
$prop1 = isset($row['prop1'])? $row['prop1']: null;
$prop2 = isset($row['prop2'])? $row['prop2']: null;
$prop3 = isset($row['prop3'])? $row['prop3']: null;
$result = $createworkoutquery->execute();
...
}
我注意到的一件事是prpop2的错误销售
if (isset($row["prpop2"])) {
$prop2 = $row["prop2"];
}
我注意到的一件事是prpop2的错误销售
if (isset($row["prpop2"])) {
$prop2 = $row["prop2"];
}
一些合理的代码缩进将是一个好主意。它帮助我们阅读代码,更重要的是,它将帮助您为自己的利益调试代码。您可能会在几周/几个月内被要求修改此代码,最后您会感谢我。如果您有很多属性,并且您希望有很多空值,为什么不重新构造您的表,以便它允许您具有可变属性?例如,
id | object | id | property | name | property | value
?get|u magic|u quotes|gpc()
已被硬编码为返回false
。除非您使用的是非常旧的服务器,否则您应该能够安全地将其删除。还有,您的ID是字符串吗?“ssss”表示是的。@miken32谢谢你指出这些。我一直在看一些来自很多网站的老教程,所以它们的代码并没有真正更新。我的Id被插入到一个整数列中,如果我将其保留为s,我将来会遇到问题吗?如果有人试图破坏你的数据库,你可能会遇到问题。PHP不会阻止某人尝试插入非数字数据。也许只有把事情做好才好。PHP经历了很多变化,并且一开始非常糟糕。您应该使用PHP7,并密切关注文章中的日期。在2012年之前的任何事情都应该被忽略,除非你能用一个新的源代码来证实。一些合理的代码缩进将是一个好主意。它帮助我们阅读代码,更重要的是,它将帮助您为自己的利益调试代码。您可能会在几周/几个月内被要求修改此代码,最后您会感谢我。如果您有很多属性,并且您希望有很多空值,为什么不重新构造您的表,以便它允许您具有可变属性?例如,id | object | id | property | name | property | value
?get|u magic|u quotes|gpc()
已被硬编码为返回false
。除非您使用的是非常旧的服务器,否则您应该能够安全地将其删除。还有,您的ID是字符串吗?“ssss”表示是的。@miken32谢谢你指出这些。我一直在看一些来自很多网站的老教程,所以它们的代码并没有真正更新。我的Id被插入到一个整数列中,如果我将其保留为s,我将来会遇到问题吗?如果有人试图破坏你的数据库,你可能会遇到问题。PHP不会阻止某人尝试插入非数字数据。也许只有把事情做好才好。PHP经历了很多变化,并且一开始非常糟糕。您应该使用PHP7,并密切关注文章中的日期。2012年之前的任何事情都应该被忽略,除非你能用一个新的来源来证实它+1@RiggsFolly这不是经常发生的事,对我来说,或者你是说+1@RiggsFolly我的意思是我要把你揍个精光。我们先把问题删掉,然后在几秒钟内把我揍个精光+1@RiggsFolly这在我身上并不常见,或者你是说+1@RiggsFolly我的意思是我要揍你一顿。那我们就把问题删掉吧