我用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['exist'] 正在调试)在 netbeans 中返回"false"。怎么会这样??
谢谢弗回复,卢卡斯
首先检查查询和返回结果的实际内容:
echo $query; // debug query
var_dump($row); // see what is returned
我建议你用更简单的查询替换sql查询(除非你真的必须像那样执行它),并用php计算出逻辑(真,假):
$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()
来清理值。