[英]Error Query PHP after migrate to mysql database
我已经使用以前在mssql服务器数据库上执行过的PHP执行查询。 现在具有相同的表和数据。 我使用mysql数据库执行查询。 但是会发生错误。 我的查询下面的任何建议,以便可以使用mysql数据库执行:
$year = mysql_query("SELECT * FROM education_year ORDER BY id DESC");
if (isset($_GET['year'])){
$educationyear= mysql_fetch_array(mysql_query("SELECT * FROM educationyear WHERE year='{$_GET['year']}'"));
}else {$educationyear = mysql_fetch_array($year);}
$kode['KODE'] = mysql_fetch_array(mysql_query("SELECT KODE FROM educationyear WHERE year='$educationyear'"));
$result = mysql_query("SELECT * FROM Province");
while($row = mysql_fetch_array($result))
{
$xd = mysql_fetch_array(mysql_query("SELECT COUNT (*) AS total FROM child WHERE id_province='{$row['province_code']}' AND education='A'
AND educationyear='{$educationyear['KODE']}'"));
}
错误消息如下:
Notice: Array to string conversion in C:\xampp\htdocs\xy\demo.php on line 19
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\xy\demo.php on line 20 .
执行$ xd查询时的行。
您的代码有一些问题
1st :在双引号字符串中使用数组时,请勿用引号引起来。 更改
"...WHERE year='{$_GET['year']}..."
"...WHERE id_province='{$row['province_code']}'..."
至:
"...WHERE year='{$_GET[year]}..."
"...WHERE id_province='{$row[province_code]}'..."
第二 :下面的设计模式不好:
mysql_fetch_array(mysql_query("SELECT...")
您将获取mysql_query
的结果,并将其直接输入mysql_fetch_array
。 只要查询成功并返回资源,此方法就起作用。 如果查询失败,它将返回FALSE
并且mysql_fetch_array
将触发您看到的错误:
mysql_fetch_array()期望参数1为资源,给定布尔值
相反,请先确认没有错误,然后再继续
$result = mysql_query("SELECT...")
if($result===false){
//Query failed get error from mysql_error($link).
//$link is the result of mysql_connect
}
else{
//now it's safe to fetch results
$record = mysql_fetch_array($result);
}
第三 :不要使用mysql_
函数。 它们已被废弃多年,并已从最新版本的PHP中删除。 切换到MySQLi或PDO
第四 :了解准备好的陈述 。 您直接在查询( $_GET['year']
)中使用用户提供的输入,这使您容易受到SQL注入的攻击。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.