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