2012-03-07 59 views
0

我有一個函數在PHP中:PHP,MySQL的功能無法正常運行

function doSQL($sql,$line) 
{ 
    $resutl = mysql_query($sql) or die("Error on line: " . $line . "<br>SQL Query: " . $sql . "<br>Error: " . mysql_error()); 
    return $result; 
} 

這是最大限度地減少需要鍵入無盡的MySQL查詢的唯一目的。

我這樣稱呼它:

$sql = "SELECT name FROM airfields WHERE id LIKE '" . $_GET['id'] . "'"; 
$result = doSQL($sql,__LINE__); 

但是,它拋出的所有調用這個錯誤:

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, null given in xxx\xxx\xxx\get_contacts.php on line xx 

我缺少什麼?

回答

1

編輯器中的拼寫檢查器? 「$ resutl」顯然是錯誤的。

+0

哇......我怎麼想那個......謝謝。 好吧,跟進問題然後:如果我刪除'$結果',只是把'return mysql_query($ sql)',它什麼也不做。這個錯誤雖然略有不同。它說'預計參數1是資源,布爾給定',爲什麼會發生? – Albert 2012-03-07 05:34:37

+0

因爲您的查詢失敗。 – 2012-03-07 05:35:13

+0

這沒有意義。使用'return $ result',它可以工作。但是使用'return query',它不會。我沒有改變查詢。 – Albert 2012-03-07 05:37:39

0

只是一個側面說明,使用您的代碼將是非常危險的,安全明智的。確保你正確地逃避你的SQL變量注入攻擊。

此外,我會建議使用一個更好的PHP數據庫模塊,如mysqli的:http://php.net/manual/en/book.mysqli.php

它更容易使用和安全很多。

+0

謝謝,請牢記這一點! :) – Albert 2012-03-07 07:51:47

+0

我很快搜索了一個正確的方法來做到這一點,並得到這個網頁。這足夠嗎? http://www.brightcherry.co.uk/scribbles/phpmysql-make-all-post-or-get-variables-safe-for-mysql-insert/ – Albert 2012-03-07 07:54:56

+0

這將保護你免受大多數SQL注入。但要確保在輸出回html以防止跨站腳本攻擊(XSS)攻擊之前,清理通過INSERT插入的數據。 – optimum 2012-03-07 10:33:14

0
function db_connect($server,$username,$pass,$database) 
{ 
    $result = new mysqli($server, $username, $pass, $database); 
    if ($result->connect_error) { 
    die('Connect Error (' . $result->connect_errno . ') ' . $result->connect_error); 
    } 

return $result; 
} 
+0

我在我的問題中的語句之前連接到數據庫。 – Albert 2012-03-07 07:50:56