使用 php 从 MySQL 返回信息
Returning information from MySQL using php
我目前正在尝试进入 php
和 MySQL
并且我正在使用这个小项目作为学习曲线,但我遇到了一个我无法获得的障碍通过。我有以下访问我的 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
我不知道是什么导致了这个问题,因为对我来说这一切似乎都很正常。我犯了一个明显的错误还是完全搞砸了?我已经看了那么久,以至于我再也不知道什么是有意义的了!
如有任何帮助,我们将不胜感激。谢谢大家!
您确定定义了变量$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($结果);
您正在尝试 运行 您的查询两次:
$result=mysql_query($query);
^^^^^^--- your SQL
mysql_query($result);
^^^^^^^---- result handle (aka resource) from previous call
第二个查询调用完全irrelevant/useless。您向调用传递了错误的参数,并且您没有从查询中捕获 return 值。即使 运行ning 正确,您也会丢弃查询结果。
然后您关闭您的数据库连接,因此当您稍后尝试调用 mysql_result()
时,没有更多的数据库连接可以从中获取您的结果。
除此之外,您还容易受到 sql injection attacks.
的攻击
简而言之,这段代码完全是一场灾难。
我目前正在尝试进入 php
和 MySQL
并且我正在使用这个小项目作为学习曲线,但我遇到了一个我无法获得的障碍通过。我有以下访问我的 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
我不知道是什么导致了这个问题,因为对我来说这一切似乎都很正常。我犯了一个明显的错误还是完全搞砸了?我已经看了那么久,以至于我再也不知道什么是有意义的了!
如有任何帮助,我们将不胜感激。谢谢大家!
您确定定义了变量$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($结果);
您正在尝试 运行 您的查询两次:
$result=mysql_query($query);
^^^^^^--- your SQL
mysql_query($result);
^^^^^^^---- result handle (aka resource) from previous call
第二个查询调用完全irrelevant/useless。您向调用传递了错误的参数,并且您没有从查询中捕获 return 值。即使 运行ning 正确,您也会丢弃查询结果。
然后您关闭您的数据库连接,因此当您稍后尝试调用 mysql_result()
时,没有更多的数据库连接可以从中获取您的结果。
除此之外,您还容易受到 sql injection attacks.
的攻击简而言之,这段代码完全是一场灾难。