繁体   English   中英

迁移到mysql数据库后错误查询PHP

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM