2013-03-05 108 views
0

我正在運行本地apache服務器和mysql服務器。我的本地網站工作正常。mysql查詢需要引號變量

當我將我的網站上傳到ipage(主機)並將數據庫導入到他們的mysql服務器時,我能夠連接到數據庫,但查詢返回null。

我檢查了上傳的數據庫,我能看到的唯一區別是本地的類型是innodb,但不知怎的,ipage不支持innodb,現在類型變成了MyISam。

現在,我做了一些測試:

這是我的PHP代碼:

$type = mysqli_real_escape_string($connection, $_GET['type']);      

$sq1 = "SELECT 
     course_id, 
     FROM 
      courses 
     WHERE 
     training_field LIKE '$type'" 

這個地方而不是工作的遠程服務器上。現在,當我硬編碼$類型。即

$sq1 = "SELECT 
     course_id, 
     FROM 
      courses 
     WHERE 
     training_field LIKE 'ENIGNEEING'" 

這種方法無處不在?

任何想法

+1

請停止與古mysql_ *函數編寫新的代碼。他們不再被維護,社區已經開始[棄用流程](http://news.php.net/php.internals/53799)。相反,您應該瞭解準備好的語句並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli)。如果你關心學習,[這裏是一個很好的PDO相關教程](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)。 – Arjan 2013-03-05 06:48:12

+0

是的我你是正確的我只是將mysql_real_escape_string移植到mysqli_real_escape_string和所有其他查詢到MySQLi。仍然是同一個問題 – Kam 2013-03-05 06:59:16

+0

@Kam - 爲什麼不把新代碼(請附上它)發佈到問題上。 – 2013-03-05 07:02:14

回答

0

試試這個

$sq1 = "SELECT 
    course_id, 
    FROM 
     courses 
    WHERE 
    training_field LIKE '".$type."'" 

PHP串聯:)

+0

您可以使用echo $ sq1找到差異; – 2013-03-05 07:23:53

1
$type = mysql_real_escape_string($_REQUEST['type']);       

$sq1 = "SELECT course_id FROM courses WHERE training_field LIKE '$type'" 

試試這個

+2

有什麼區別? – Kam 2013-03-05 06:58:25

+0

'$ _GET' vs'$ _REQUEST' – Arjan 2013-03-05 07:42:04