我在php中编写了一个函数,它根据给定的数组更新mysql表。 在更新之前,我检查是否已存在具有相同描述' - 值的条目。
// $fachtyp is given by foreach
$query = "SELECT IF(EXISTS(SELECT 1 FROM fachtyp WHERE `Description`='$fachtyp'),'true','false')"
. " AS existance";
$result = mysqli_query($con, $query);
$row = mysqli_fetch_assoc($result);
$exists = ($row['existance'] === 'true');
if (!$exists) { /* update */ }
问题如下:当我调试这个时,我认为$ row ['exists']是twhile调试)在netbeans中返回'false'。怎么会发生这种情况?
Thx fer回复,Lukas
答案 0 :(得分:0)
首先检查查询的实际内容并返回结果:
echo $query; // debug query
var_dump($row); // see what is returned
我建议你用简单的查询替换sql查询(除非你真的必须这样执行),并用php计算出逻辑(true,false):
$query = "SELECT 1 FROM fachtyp WHERE `Description`='$fachtyp'";
$result = mysqli_query($con, $query);
$exists = (bool) mysqli_num_rows($result); // just count returned rows is enough to determine if value exists in database
if (!$exists) { /* update */ }
如果$fachtyp
值来自请求(GET或POST值,实际上即使它不是来自请求),您应该使用mysqli_real_escape_string()
来清理值,然后再将其置于查询中。< / p>