2013-02-25 6 views
0

Im пытается преобразовать проект шахты из MySQL в Mysqli, но, кажется, дает мне ошибкуmysqli_query параметры

Warning: mysqli_query() expects at least 2 parameters, 1 

это мое подключение к базе данных

$mysqli = new mysqli(); 
$mysqli->connect('localhost', 'root', '', 'myscript'); 

это запрос

$sql = mysqli_query("SELECT * FROM settings WHERE id='1'") or die (mysqli_error()); 
$results = mysqli_fetch_array($sql); 

Если кто-нибудь скажет мне, как исправить эту ошибку, я буду благодарен. заранее спасибо.

+0

Параметры для mysqli_query() описаны в руководстве: http://php.net/mysqli_query (примечание: процедурный стиль!) –

+2

Возможно, руководство могло бы помочь: ['mysqli_query'] (http: // php. нетто/mysqli_query). Объектно-структурированный интерфейс проще в использовании, только процедурный вызов требует параметра ресурса/ссылки. – mario

+1

Вы установили соединение с использованием стиля OO. Почему бы не продолжить этот путь? '$ sql = $ mysqli-> query (...);' –

ответ

2

Вы можете попробовать выполнять запрос с использованием объектно-ориентированного PHP путь вместо смешивания и сопоставления объектно-ориентированного PHP и регулярные PHP:

$mysqli = new mysqli(); 
$mysqli->connect('localhost', 'root', '', 'myscript'); 
if($result = $mysqli->query("SELECT * FROM settings WHERE id='1'")){ 

    //DO STUFF 

    $result->close(); 
}else{ 
    printf("Error: %s\n", $mysqli->error); 
} 
+0

Спасибо, что вы работаете как шарм –

0

Пожалуйста, не конвертировать проект ваш из MySQL в Mysqli.
Преобразуйте его в PDO.
Mysqli хорош только для глупых примеров из руководства новичка - это сделает вашу жизнь более трудной, пока вы прогрессируете.

Итак, вместо mysqli просто используйте PDO.
Это почти то же самое:

$opt = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION); 
$pdo = new PDO('mysql:dbname=myscript;host=localhost','root','', $opt); 

$stm = $pdo->prepare("SELECT * FROM settings WHERE id=?"); 
$stm->execute(array(1)); 
$data = $stm->fetch(); 

Примечания parameretized поддержки запросов - основная причина такого шага между водителями - которые уже используются в этом коде.
Даже в таких небольших примерах PDO лучше. Лучше. И с более сложными mysqli станет полностью непригодным, а PDO будет тем же самым - довольно уродливым, но, по крайней мере, осуществимым.

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