【问题标题】:PHP and mysql, SELECT query return nullPHP和mysql,SELECT查询返回null
【发布时间】:2014-12-31 11:15:42
【问题描述】:

这是 PHP 代码:

<?php
// header('Content-type: application/json');
header('Content-Type: text/html; charset=UTF-8');

$d=$_GET["userid"];

 $servername = "*******";
 $username = "***";
 $password = "****";
 $dbname = "*****";
 $arr = array();

  $My_Connection = mysql_connect ( $servername, $username , $password ) ;
     if ( ! $My_Connection )
       {
           die( ' Could not connect : ' . mysql_error( ) ) ;
       }
    //pick data base
    mysql_select_db ( $dbname, $My_Connection );

    mysql_set_charset('utf8',$My_Connection);

         $sql_tempcreate="CREATE TABLE tmp(id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,DID VARCHAR(20) NOT NULL)";
         if(mysql_query($sql_tempcreate,$My_Connection))
         {
            $sql_convert="ALTER TABLE tmp CONVERT TO CHARACTER SET utf8";
            mysql_query($sql_convert);

           $sql_inserttotemp="INSERT INTO tmp (DID) SELECT DID FROM user WHERE 1 Order By HIGHSCORE DESC";
                if(mysql_query($sql_inserttotemp,$My_Connection))

                {
                 //***************************************** from here problem start
                    $sql_rank="SELECT * FROM `tmp` WHERE DID =".$d."";//    |
                    $r=mysql_query($sql_rank,$My_Connection);             //    |
                                                                          //    |
                    $rank= $r;                                            //    V
                }//******************************************************** to here

         }
         else
         {
            $rank= array("ERROR","ERROR");
         }
            $output = json_encode(array('top' => $arr,'rank' =>$rank));
            echo ($output);
    }
    else
    {
        echo "there is an error :(";
    }
    mysql_query("DROP TABLE tmp",$My_Connection);
mysql_close($My_Connection); 

?>

表tmp创建成功,数据插入到tmp表成功但“选择查询”返回null! 实际上 $r 为空 我尝试(LIKE & =)但结果相同

这个查询有什么问题?

编辑:

我什至将查询更改为:

$sql_rank="SELECT * FROM tmp WHERE DID=352136069213581" 

并且不再工作:(

坦克

编辑: 正确答案:

tanks to gaurav kumar 这是正确的代码:D

$sql_rank="SELECT * FROM `tmp` WHERE DID LIKE ".$d."";
$res=mysql_query($sql_rank,$My_Connection);
$r=mysql_fetch_assoc($res);
$rank= $r;

【问题讨论】:

  • 使用mysqliPDO 代替mysql
  • 你检查过$d吗?
  • $d 是正确的对不起你的意思是它不能和 mysql_ 一起使用?!
  • mysql 已弃用
  • 首先使用mysql_fetch_assoc($rank, $My_Connection);然后使用 print_r() 进行调试;然后检查你的输出。

标签: php mysql database


【解决方案1】:

$d 可能是一个字符串。因此您需要将它们括在引号中(单引号或双引号) 还要修剪$d中的空格

$d=trim($_GET["userid"]);
$sql_rank="SELECT * FROM `tmp` WHERE DID ='".$d."'";

还可以尝试使用mysqliPDO 而不是mysql,因为mysql_* functions are deprecated

【讨论】:

  • 我之前尝试过,但结果相同。我在这个 PHP 文件中有另一个 SELECT QUERY 并且可以工作
【解决方案2】:
$d=trim($_GET["userid"]);
$sql_rank="SELECT * FROM `tmp` WHERE ID ='".$d."'";

你的代码是这样的:$d=$_GET["userid"];

$sql_rank="SELECT * FROM `tmp` WHERE DID ='".$d."'";

没有使用 ID

【讨论】:

    【解决方案3】:

    试试这个:

     $sql_rank="SELECT * FROM `tmp` WHERE DID =".$d."";
     $r=mysql_query($sql_rank,$My_Connection);
     $rank = mysql_fetch_row($r);
    

    这将为您提供行数组,以便您可以像echo $rank[0]; 一样获取

    【讨论】:

    • 没有这个查询给我那个用户的 id 这个代码在我的服务器上正常工作并且我的应用程序正常工作。所以答案是正确的:D
    【解决方案4】:

    坦克到 gaurav kumar 这是正确的代码:D

    $sql_rank="SELECT * FROM `tmp` WHERE DID LIKE ".$d."";
    $res=mysql_query($sql_rank,$My_Connection);
    $r=mysql_fetch_assoc($res);
    $rank= $r;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      • 1970-01-01
      • 2019-02-28
      相关资源
      最近更新 更多