簡體   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