我一直在思考,但我无法提出有效的解决方案。目前,我在PHP中有一个由用户获取的数组。它是一个对象数组,每个对象有10个变量。
我需要检查这个数组是否与SQL的数据完全匹配,这意味着每个对象的所有变量必须相互匹配。索引并不重要。
1)我如何检查?现在,我可以比较的唯一方法是数组中的元素数与数据库中的行数。如果我想深入检查,我真的需要通过变量检查变量吗?意思是如果我有10个对象,我需要10 * 10个变量检查吗?
2)我能想到的唯一可行的解决方案是擦除数据库表并根据数组逐个插入对象,但我担心如果有100个对象,它不会太重sql数据库?
答案 0 :(得分:0)
一种相对原始的方式是:
$fields = array();
$object = new STDClass();
$object->name = "My Name";
$object->status = "My Status";
$object->level = "My Level";
foreach ($object as $key => $value)
{
$fields[]="`$key` = '$value'";
}
$sql = implode(" AND ", $fields);
$query = "SELECT * FROM tablename WHERE $sql";
这将生成一个查询,该查询检查具有您对象中的值的行。
这有多精确取决于您的表的排序规则和字符集。如果您需要100%的确切结果,则可以随时进行BINARY
比较。