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

标签 php mysql sql

我在 php 中编写了一个函数,它根据给定的数组更新 mysql-table。 在更新之前,我检查是否已存在具有相同“描述”值的条目。

// $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'] 是在调试时)在 netbeans 中返回“false”。怎么会发生这种事?

感谢卢卡斯的回复

最佳答案

首先检查实际的查询和返回结果:

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() 来在将值放入查询之前对其进行清理。

关于PHP:MY​​SQL 查询返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18771983/

相关文章:

sql - 如果不存在则创建 View ?

php - 在 wordpress 站点中导航时网页内容有点移动

php - 表单外的复选框

php - 如果日期已经存在或有重复,则求和时间

php - 尝试运行任务、发送图像时,出现错误 Code=13 "query cancelled"

mysql - 如何在 MySQL 中将行拆分为多列

php - 如何在 MySQL 查询中添加多个 OR

mysql - 分组依据相同的表ID

mysql - 简化查询以获取行总和

mysql - 如何在已包含外键的表中添加数据