Я учился использовать подготовленные и связанные операторы для моих запросов SQL, и я до сих пор выступил с этим, это работает нормально, но это не является динамичным вообще, когда доходит до нескольких параметров или когда не требуется параметр, < /p>
public function get_result($sql,$parameter)
{
# create a prepared statement
$stmt = $this->mysqli->prepare($sql);
# bind parameters for markers
# but this is not dynamic enough...
$stmt->bind_param("s", $parameter);
# execute query
$stmt->execute();
# these lines of code below return one dimentional array, similar to mysqli::fetch_assoc()
$meta = $stmt->result_metadata();
while ($field = $meta->fetch_field()) {
$var = $field->name;
$$var = null;
$parameters[$field->name] = &$$var;
}
call_user_func_array(array($stmt, 'bind_result'), $parameters);
while($stmt->fetch())
{
return $parameters;
//print_r($parameters);
}
# close statement
$stmt->close();
}
< /code>
Вот как я называю классы объектов, < /p>
$mysqli = new database(DB_HOST,DB_USER,DB_PASS,DB_NAME);
$output = new search($mysqli);
< /code>
Иногда мне не нужно проходить ни в каких параметрах, < /p>
$sql = "
SELECT *
FROM root_contacts_cfm
";
print_r($output->get_result($sql));
< /code>
Иногда мне нужны только один параметры, < /p>
$sql = "
SELECT *
FROM root_contacts_cfm
WHERE root_contacts_cfm.cnt_id = ?
ORDER BY cnt_id DESC
";
print_r($output->get_result($sql,'1'));
< /code>
Иногда мне нужно больше, чем один параметры, < /p>
$sql = "
SELECT *
FROM root_contacts_cfm
WHERE root_contacts_cfm.cnt_id = ?
AND root_contacts_cfm.cnt_firstname = ?
ORDER BY cnt_id DESC
";
print_r($output->get_result($sql,'1','Tk'));
< /code>
Итак, я считаю, что эта строка недостаточно динамична для динамических задач выше, < /p>
$stmt->bind_param("s", $parameter);
< /code>
Чтобы динамически построить bind_param, я нашел это на других сообщениях онлайн. < /p>
call_user_func_array(array(&$stmt, 'bind_params'), $array_of_params);
< /code>
И я попытался изменить какой -то код из php.net, но я никуда не получаю, < /p>
if (strnatcmp(phpversion(),'5.3') >= 0) //Reference is required for PHP 5.3+
{
$refs = array();
foreach($arr as $key => $value)
$array_of_param[$key] = &$arr[$key];
call_user_func_array(array(&$stmt, 'bind_params'), $array_of_params);
}
< /code>
Почему? Есть идеи, как я могу заставить это работать?
Или, может быть, есть лучшие решения?
Подробнее здесь: https://stackoverflow.com/questions/510 ... lly-in-php
Как привязать аргументы mysqli bind_param динамически в PHP? ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1741596932
Anonymous
Я учился использовать подготовленные и связанные операторы для моих запросов SQL, и я до сих пор выступил с этим, это работает нормально, но это не является динамичным вообще, когда доходит до нескольких параметров или когда не требуется параметр, < /p>
public function get_result($sql,$parameter)
{
# create a prepared statement
$stmt = $this->mysqli->prepare($sql);
# bind parameters for markers
# but this is not dynamic enough...
$stmt->bind_param("s", $parameter);
# execute query
$stmt->execute();
# these lines of code below return one dimentional array, similar to mysqli::fetch_assoc()
$meta = $stmt->result_metadata();
while ($field = $meta->fetch_field()) {
$var = $field->name;
$$var = null;
$parameters[$field->name] = &$$var;
}
call_user_func_array(array($stmt, 'bind_result'), $parameters);
while($stmt->fetch())
{
return $parameters;
//print_r($parameters);
}
# close statement
$stmt->close();
}
< /code>
Вот как я называю классы объектов, < /p>
$mysqli = new database(DB_HOST,DB_USER,DB_PASS,DB_NAME);
$output = new search($mysqli);
< /code>
Иногда мне не нужно проходить ни в каких параметрах, < /p>
$sql = "
SELECT *
FROM root_contacts_cfm
";
print_r($output->get_result($sql));
< /code>
Иногда мне нужны только один параметры, < /p>
$sql = "
SELECT *
FROM root_contacts_cfm
WHERE root_contacts_cfm.cnt_id = ?
ORDER BY cnt_id DESC
";
print_r($output->get_result($sql,'1'));
< /code>
Иногда мне нужно больше, чем один параметры, < /p>
$sql = "
SELECT *
FROM root_contacts_cfm
WHERE root_contacts_cfm.cnt_id = ?
AND root_contacts_cfm.cnt_firstname = ?
ORDER BY cnt_id DESC
";
print_r($output->get_result($sql,'1','Tk'));
< /code>
Итак, я считаю, что эта строка недостаточно динамична для динамических задач выше, < /p>
$stmt->bind_param("s", $parameter);
< /code>
Чтобы динамически построить bind_param, я нашел это на других сообщениях онлайн. < /p>
call_user_func_array(array(&$stmt, 'bind_params'), $array_of_params);
< /code>
И я попытался изменить какой -то код из php.net, но я никуда не получаю, < /p>
if (strnatcmp(phpversion(),'5.3') >= 0) //Reference is required for PHP 5.3+
{
$refs = array();
foreach($arr as $key => $value)
$array_of_param[$key] = &$arr[$key];
call_user_func_array(array(&$stmt, 'bind_params'), $array_of_params);
}
< /code>
Почему? Есть идеи, как я могу заставить это работать?
Или, может быть, есть лучшие решения?
Подробнее здесь: [url]https://stackoverflow.com/questions/5100046/how-to-bind-mysqli-bind-param-arguments-dynamically-in-php[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия