2012-03-07 2 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

wow ... как я пропустил это ... Спасибо. Хорошо, выполните следующий вопрос: если я удалю '$ result' и просто поставлю' return mysql_query ($ sql) ', он ничего не сделает. Ошибка немного отличается. В нем говорится: 'ожидает, что параметр 1 будет ресурсом, boolean given', почему это происходит? – Albert

+0

Поскольку ваш запрос не удался. –

+0

Это не имеет смысла. Используя 'return $ result', он работает. Но используя 'return query', это не так. Я не изменяю запрос. – Albert

0

Просто боковое примечание, используя ваш код как есть, будет очень рискованным, безопасным. Удостоверьтесь, что вы правильно избегаете переменным get для SQL-атак.

Кроме того, я бы рекомендовал использовать более модуль базы данных PHP, такие как MySQLi: http://php.net/manual/en/book.mysqli.php

Это проще в использовании и намного безопаснее.

+0

Спасибо, будем помнить об этом! :) – Albert

+0

Я быстро нашел правильный способ сделать это и получил эту страницу. Этого хватит? http://www.brightcherry.co.uk/scribbles/phpmysql-make-all-post-or-get-variables-safe-for-mysql-insert/ – Albert

+0

Это защитит вас от большинства инъекций SQL. Но убедитесь, что вы дезинфицируете данные, вставленные через INSERT, прежде чем вы вернетесь обратно в html для предотвращения атак Cross Site Scripting (XSS). – optimum

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

Смежные вопросы