使用php从MySQL返回信息

时间:2015-02-11 15:04:48

标签: php html mysql mysqli

我目前正试图进入phpMySQL而我正在使用这个小项目作为学习曲线,但我遇到了一个我无法解决的问题。我有以下代码访问我的MySQL数据库,我目前正在尝试使用以下搜索功能回显数据:

<?php
ob_start();
require("config.php");
ob_end_clean();

$req=$_REQUEST['workingDate'];
$req2=$_REQUEST['location'];

mysql_connect("XXXXXXXXXXX",$username,$password);
mysql_select_db($database) or die( "Unable to select database");

if ($req!="all" && $req2!="all")  $query="SELECT * FROM TrackerTable WHERE workingDate='$req' AND location1='$req2'";
else if($req=="all" && $req2!="all" ) $query="SELECT * FROM TrackerTable WHERE location1='$req2'";
else if($req!="all" && $req2=="all" ) $query="SELECT * FROM TrackerTable WHERE make='$req'";
else if($req=="all" || $req2=="all" ) $query="SELECT * FROM TrackerTable";

$result=mysql_query($query);
$num=mysql_numrows($result);

mysql_query($result);
mysql_close();

$i=0;

for ($i; $i < $num; $i++){
        $f12=mysql_result($result,$i,"workingDate");
        $f13=mysql_result($result,$i,"location1");
echo $f12." ".$f13."<br />";
}
?>

我遇到的问题是每当我尝试使用以下html表单搜索数据库时:

<form method="post" action="searchFunction.php"  name="input" id="searchform">
    <label class="section">Search Options</label><br />
    <input name="workingDate" type="text" id="workingDate" placeholder="Search by Date">
    <input name="location1" type="text" id="location1" placeholder="Search by Location">
    <input name="submit" type="submit" id="add" value="Find!">
</form>

我发现这个错误:

 Warning: mysql_query() expects parameter 1 to be string, resource given in /XXXXXX/XXXXXX/XXXXX/XXXX/XXXXX.com/XXXXXX/searchFunction.php on line 20

我不知道是什么原因导致这个问题,因为对我来说这一切似乎都很合适。我正在制造一个明显的错误,或者只是完全搞砸了?我已经看了很长时间,我不知道什么是有道理的了!

非常感谢任何帮助。谢谢你们!

2 个答案:

答案 0 :(得分:1)

您确定定义了变量$ query吗? 这是因为在语句中if / elseif是您定义变量$ query的地方。

   // first define default value for your $query variable
   $query="SELECT * FROM TrackerTable";

   // then use your if/else statement
if ($req!="all" && $req2!="all") .....................

您有错误

$result=mysql_query($query);
$num=mysql_numrows($result);

mysql_query($result); // error here

mysql_close();

$ result不是字符串,是资源。 的mysql_query($结果);

查看http://php.net/manual/en/function.mysql-query.php了解详情

答案 1 :(得分:1)

您尝试两次运行查询:

$result=mysql_query($query);
                    ^^^^^^--- your SQL
mysql_query($result);
            ^^^^^^^---- result handle (aka resource) from previous call

第二个查询调用完全不相关/无用。您正在向调用传递错误的参数,并且您无法从查询中捕获返回值。即使它运行正常,您也会丢弃查询结果。

然后关闭数据库连接,因此当您稍后尝试拨打mysql_result()时,不再需要数据库连接来获取结果。

除此之外,您还容易受到sql injection attacks的攻击。<​​/ p>

简而言之,这段代码完全是灾难。