如何检查服务器PHP上是否存在数据


How to check if data exists on server PHP

我正在尝试向服务器发送一个数字字符串,并拆分每个数字。如果数据库中存在该数字,则指定一个"t"值,如果不存在,则指定"f"值。但出于某种原因,我只得到了t。

<?php
# get phone from uid
include_once 'utils.php';
$phone = $_GET['phone'] or die("isRegistered: missing phone");
$response = "";
$phonearray = explode(":", $phone);

for ($i = 0; $i<sizeof($phonearray); $i++){
   $result = findRow("phone", $phonearray[i], "user_device") or "true" ;
   if($result == "true")
   {
      $response = $response."t".":";
      $result = "";
   }
   else 
   {
      $response = $response."f".":";
      $result = "";
   }
}
die($response);
?>

这里实际上有几个问题。

  1. 正如其他答案中所提到的,您在代码的两个分支中都错误地使用了't'

  2. 您使用的似乎是字符串"true",而不是布尔值true。虽然由于PHP在类型之间转换值的方式,它可能看起来很有效,但您实际上可能打算使用true,而使用字符串可能会导致以后出现意外行为。

  3. 我不知道findRow()做什么,但通过在它的末尾添加or true(甚至or "true"),$result始终true

  4. 您正在使用i来引用$phonearray,而不是$ii将生成一个PHP警告,并将被解释为"i"-而不是$i变量的值。

如果您查看代码的这一部分:

$result = findRow("phone", $phonearray[i], "user_device") or "true" ;
if($result == "true")
{
    $response = $response."t".":";
    $result = "";
}
else
{
    $response = $response."t".":";
    $result = "";
}

这样重写会得到更好的结果:

$result = findRow("phone", $phonearray[$i], "user_device");
$response .= ($result ? 't' : 'f') . ':';

我猜测findRow()的作用,因为您没有包含任何关于它的内容,但我假设它只是返回一个真/假值。

您会注意到,我还通过使用三元运算符将整个if/else语句简化为几行。

if($result == "true")
{
$response = $response."t".":";
$result = "";
}
else 
{
$response = $response."t".":";
$result = "";
}

将此部分更改为

if($result == "true")
{
$response = $response."t".":";
$result = "";
}
else 
{
$response = $response."f".":";
$result = "";
}

您已经为if和else条件都设置了"t"。

并检查

if(isset($_GET['phone']))
if($result == "true")
{
$response = $response."t".":";
$result = "";
}
else 
{
$response = $response."t".":";
$result = "";
}

将此部分更改为

if($result == 'true')
{
$response = $response.'t:';
$result = '';
}
else 
{
$response = $response.'f:';
$result = '';
}