PHP:MY​​SQL查询返回错误的值

时间:2013-09-12 18:41:01

标签: php mysql sql

我在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

1 个答案:

答案 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>

相关问题