2013-04-29 4 views
0

Каждый раз, когда я создаю Mysqli объект, я использовать подготовленный Mysqli заявление как это (иногда несколько на одной странице):Я создаю слишком много объектов mysqli?

$update_foobar_statement = $mysqli->prepare("UPDATE foo SET bar = ? WHERE foobar = ?"); 
$update_foobar_statement->bind_param('ss', $bar, $foobar); 
$update_foobar_statement->execute(); 

Я по существу, создавая копию Mysqli объекта. Это заставило меня подумать, что я могу создать слишком много объектов и повредить общую производительность своих веб-приложений.

Мне нравится уточнять, что делает инструкция mysqli через начальную переменную, но является ли эта плохая практика? Должен ли я делать следующее вместо этого?

$mysqli->prepare("UPDATE foo SET bar = ? WHERE foobar = ?"); 
$mysqli->bind_param('ss', $bar, $foobar); 
$mysqli->execute(); 
+1

если вы intantiating Mysqli класса каждый раз вы хотите запросить, чем вы создаете несколько объектов .. если экземпляр $ MySQL = новый mysqli (...) только один раз, когда anf использует эту переменную .. вы просто просто используете один объект ... – Dinesh

+0

также вы можете принудительно создать единственный объект, создав класс singleton для базы данных .. – Dinesh

ответ

0

Вы также должны хранить значение, возвращаемое $mysqli->prepare и во втором случае, так что остальные обсуждается только то, имя переменной, и если вы будете повторно использовать его или нет.

Это не имеет большого значения в нижней строке. Память, использующая отдельную переменную для каждого запроса, теоретически может привести к более высоким требованиям, но это не будет иметь практического эффекта, пока вы не попадёте в десятки тысяч, по крайней мере. Так что не беспокойтесь об этом.

0

, если это всегда то же самое SQL вы можете просто сделать эту часть еще раз:

$update_foobar_statement->bind_param('ss', $bar, $foobar); 
$update_foobar_statement->execute(); 
Смежные вопросы