当返回值= 1时回显

时间:2019-01-12 20:54:08

标签: php mysql

我正在尝试从数据库中选择一个值。选择查询返回10。如果返回值是1,我想回显“是”,如果返回值是0,我要回显“否”。

运行脚本时,我总是得到“是”。

有人知道我的脚本出了什么问题吗?

这是我的PHP脚本:

$sql = "SELECT row FROM table WHERE id='". $_GET['id'] ."'";
$result = $conn->query($sql);

if ($result == 1){
  echo 'yes';
}
else
{
  echo 'No';
}
$conn->close();

2 个答案:

答案 0 :(得分:1)

对于答案,重要的是要知道使用哪个数据库API。 对于大多数API

$result

将是代表您结果的一种结果对象。通常是行的集合。您可以调用某种fetch函数从结果中获取一行,然后检查该行是否包含1或0。 您应该阅读API的文档以了解更多详细信息。 PHP总是给出“是”,因为==运算符试图进行类型转换,而我想它会将两个值都转换为true。 http://php.net/manual/de/language.types.type-juggling.php

答案 1 :(得分:1)

如果只想知道ID是否存在,则可以使用COUNT(*)表达式。这样一来,无论计数是0还是1,都将确保查询返回恰好一行。

您应该养成使用参数的习惯,而不是通过将$_GET变量连接到查询中来创建SQL注入漏洞。

在每个可能返回错误的数据库函数之后检查错误。

$sql = "SELECT COUNT(*) FROM table WHERE id=?";
if (($stmt = $conn->prepare($sql) === false) {
  error_log($conn->error);
  die("Database error");
}

// assuming mysqli, but if you use PDO, binding is done differently
if ($stmt->bind_param('i', $_GET['id']) === false) {
  error_log($stmt->error);
  die("Database error");
}

if ($stmt->execute() === false) {
  error_log($stmt->error);
  die("Database error");
}

if (($result = $stmt->get_result()) === false) {
  error_log($stmt->error);
  die("Database error");
}

$row = $result->fetch_row();
$count = $row[0];
if ($count >= 1){
  echo 'yes';
}
else
{
  echo 'No';
}

$stmt->close();
$conn->close();