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

如何检查PHP服务器上是否存在数据,php,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);

我正在尝试向服务器发送一个数字字符串,并拆分每个数字。如果数据库中存在该数字,则指定一个“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);

?>

将此部分更改为

if($result == "true")
{
$response = $response."t".":";
$result = "";
}
else 
{
$response = $response."f".":";
$result = "";
}
if($result == 'true')
{
$response = $response.'t:';
$result = '';
}
else 
{
$response = $response.'f:';
$result = '';
}
将此部分更改为

if($result == "true")
{
$response = $response."t".":";
$result = "";
}
else 
{
$response = $response."f".":";
$result = "";
}
if($result == 'true')
{
$response = $response.'t:';
$result = '';
}
else 
{
$response = $response.'f:';
$result = '';
}
您已经为if和else条件设置了“t”

检查一下

if(isset($_GET['phone']))
您已经为if和else条件设置了“t”

检查一下

if(isset($_GET['phone']))
将此部分更改为

if($result == "true")
{
$response = $response."t".":";
$result = "";
}
else 
{
$response = $response."f".":";
$result = "";
}
if($result == 'true')
{
$response = $response.'t:';
$result = '';
}
else 
{
$response = $response.'f:';
$result = '';
}
将此部分更改为

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

实际上这里有几个问题

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

  • 您似乎在使用字符串
    “true”
    而不是布尔值
    true
    。由于PHP在不同类型之间转换值的方式,它可能会起作用,但实际上您可能打算使用
    true
    ,而使用字符串可能会导致以后出现意外行为

  • 我不知道
    findRow()
    做了什么,但通过在末尾添加
    或true
    (甚至
    或“true”
    ),
    $result
    将始终
    true

  • 您正在使用
    i
    引用
    $phonearray
    而不是
    $i
    i
    将生成一个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
    语句简化为几行。

    这里实际上有几个问题

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

  • 您似乎在使用字符串
    “true”
    而不是布尔值
    true
    。由于PHP在不同类型之间转换值的方式,它可能会起作用,但实际上您可能打算使用
    true
    ,而使用字符串可能会导致以后出现意外行为

  • 我不知道
    findRow()
    做了什么,但通过在末尾添加
    或true
    (甚至
    或“true”
    ),
    $result
    将始终
    true

  • 您正在使用
    i
    引用
    $phonearray
    而不是
    $i
    i
    将生成一个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和else条件都将$response设置为t。很抱歉,这是一个拼写错误。if和else条件都将$response设置为t。很抱歉,这是一个拼写错误。@WesleyMurch检查差异。这并不能解决问题事实上,
    $result
    将始终是
    真的
    @WesleyMurch检查差异。这并没有解决
    $result
    将始终是
    真的这一事实。这并没有解决
    $result
    将始终是
    真的这一事实。这并没有解决
    $result
    将始终是的这一事实
    true
    。这并没有解决
    $result
    始终为
    true
    的问题。这并没有解决
    $result
    始终为
    true
    的问题。问题是findrow()将转到数据库中检查是否存在电话号码。如果返回,则返回该表数据的数组。现在我只想区分数据库中是否存在这个数字。如果是,那么我想给它分配一个“t”值,如果不是,那么给它分配一个“f”值……但是由于某种原因,它给出了所有的true或false。这个问题太愚蠢了。$phonearray[i]应该是$phonearray[$i]……谢谢你的帮助。我确实学到了一些东西。@nishan_vodoo哎呀,我错过了那个。我已经更新了我的答案,也包括了该修复(供将来参考)。问题是findrow()将去检查数据库中是否存在电话号码。如果返回,则返回该表数据的数组。现在我只想区分数据库中是否存在这个数字。如果是,那么我想给它分配一个“t”值,如果不是,那么给它分配一个“f”值……但是由于某种原因,它给出了所有的true或false。这个问题太愚蠢了。$phonearray[i]应该是$phonearray[$i]……谢谢你的帮助。我确实学到了一些东西。@nishan_vodoo哎呀,我错过了那个。我已经更新了我的答案,以包括该修复程序(供将来参考)。