可能重复:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select
我正在建立一个基本的网站,我对PHP的了解很小,但我正试图用它来实现。当我尝试声明从sql查询填充它们的两个变量($ lat,$ lon)时,我收到一个错误。我得到的错误是
警告:mysql_result()要求参数1为资源,布尔值在第23行的/home/content/j/o/h/johnbeach2/html/findtechkids.com/zip2.php中给出
警告:mysql_result()期望参数1是资源,第24行/home/content/j/o/h/johnbeach2/html/findtechkids.com/zip2.php中给出的布尔值 阵列
我的页面代码如下,我确信我的逻辑很可怕,但我是php的新手并且愿意学习!
<?php
$username="johnsmith";
$password="notactuallymypassword";
$database="somedb";
$host="notmydb.gullible.net";
$userzip = $_POST['userzip'];
mysql_connect($host,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$mysqli="SELECT lat, lon FROM `zipdb` WHERE zip = '$userzip'";
$result=mysql_query($query);
$r=0;
$lat=mysql_result($result,$r,"lat");
$lon=mysql_result($result,$r,"lon");
echo "$lat $lon";
function zipcodeRadius($lat, $lon, $radius)
{
$radius = $radius ? $radius : 20;
$query="SELECT distinct(zip) FROM zipdb WHERE (3958*3.1415926*sqrt((lat-'.$lat.')* (lat-'.$lat.') + cos(lat/57.29578)*cos('.$lat.'/57.29578)*(lon-'.$lon.')*(lon- '.$lon.'))/180) <= '.$radius.';";
$result1=mysql_query($query);
$zipcodeList = array();
return $zipcodeList;
}
echo zipcodeRadius($lat, $lon, 5);
mysql_close();
?>
我非常感谢任何反馈,尤其是我收到的错误,但任何代码改进或建议都非常受欢迎。提前致谢, 哈里森。
答案 0 :(得分:1)
您的查询为空。应该是:
$mysqli="SELECT lat, lon FROM `zipdb` WHERE zip = '$userzip'";
$result=mysql_query($mysqli); // <---- false
所以,mysql_query
会返回false
,这就是为什么这个脚本会说boolean given instead of resource
。
要诊断此类情况,您可以在程序中放置一些var_dumps
或var_exports
,以查看变量的实际值。
任何代码改进或建议都非常受欢迎
使用mysql_query
明确返回的连接链接:
$connection = mysql_connect($host,$username,$password);
mysql_select_db('mydatabase', $connection) or die ('could not select database mydatabase');
$resource = mysql_query('INSERT INTO mytable SET key = "val"',$connection) or die('something weird is happening');
$last_mytable_id = mysql_insert_id($connection);
$sql = 'SELECT lat, lon FROM `zipdb` WHERE zip = :userzip';
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':userzip' => $userzip));
$result1 = $sth->fetchAll();
$sth->execute(array(':userzip' => $userzip2));
$result2 = $sth->fetchAll();
它可以帮助您避免一些错误,首先要提到的是,它会使您免于SQL Injections
(所谓的Bobby Tables
)。