A function to call a stored procedure with an arbitrary number of IN parameters and one OUT parameter, for instance returning affected row count. The return value of yhe function is this value.
<?php
/**
* call_sp Call the specified stored procedure with the given parameters.
* The first parameter is the name of the stored procedure.
* The remaining parameters are the (in) parameters to the stored procedure.
* the last (out) parameter should be an int, like state or number of affected rows.
*
* @param mixed $sp_name The name of the stored procedure to call.
* @param mixed $params The parameters to pass to the stored procedure.
* @return int The number of affected rows.
*/
function call_sp( \mysqli $db, string $sp_name, ...$params ): int
{
$sql = "CALL $sp_name( ";
$sql .= implode( ", ", array_fill( 0, count( $params ), "?" ) );
$sql .= ", @__affected );";
$result = $db->execute_query( $sql, $params );
$result = $db->query( "select @__affected;" );
$affected = (int) $result->fetch_column( 0 );
return $affected;
}mysqli::execute_query
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
mysqli::execute_query
Референца за `mysqli.execute-query.php` со подобрена типографија и навигација.
mysqli::execute_query
mysqli_execute_query
(PHP 8 >= 8.2.0)
mysqli::execute_query -- mysqli_execute_query — (PHP 8 >= 8.2.0)
= NULL
Напиши целосна ознака на елемент
Процедурален стил
Подготвува, врзува параметри и извршува SQL изјава Ја подготвува SQL нарачката, ги врзува параметрите и ја извршува. The mysqli::execute_query() враќа објект за изјава или, методот е кратенка за, mysqli_stmt::bind_param()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во mysqli_stmt::execute().
Ја подготвува SQL нарачката и враќа рачка за изјава што ќе се користи за понатамошни операции на изјавата. Нарачката мора да се состои од една SQL изјава.?mysqli_stmt::get_result() array using
params parameter.
) ознаки на параметри—исто така наречени заменски знаци. Вредностите на параметрите мора да бидат обезбедени како mysqli_stmt Подготвената изјава се создава под хаубата, но никогаш не се открива надвор од функцијата. Невозможно е да се пристапи до својствата на изјавата како што би се правело со mysqli објект. Поради ова ограничување, информациите за статусот се копираат во mysqli_affected_rows() or mysqli_error().
Забелешка:
објект и се достапни користејќи ги неговите методи, на пр. mysqli_execute_query() Во случај кога изјава е предадена на
max_allowed_packetшто е подолго од
на серверот, вратените кодови за грешки се различни во зависност од оперативниот систем. Однесувањето е како што следува:
На Linux враќа код за грешка 1153. Пораката за грешка значи.max_allowed_packetbytesдоби пакет поголем од
На Windows враќа код за грешка 2006. Оваа порака за грешка значи.
Параметри
-
mysql објектот како свој прв аргумент. mysqli Само процедурален стил: А mysqli_connect() or mysqli_init()
query-
пред извршување на изјавата.
Нарачката, како стринг. Мора да се состои од една SQL изјава.
?SQL изјавата може да содржи нула или повеќе маркери за параметри претставени со знаци прашалник (Забелешка:
) на соодветните позиции.
VALUES()Маркерите се легални само на одредени места во SQL изјавите. На пример, дозволени се воINSERTлистата наWHEREизјава (за специфицирање вредности на колони за ред), или во споредба со колона во params-
серверот се исклучил array со онолку елементи колку што има поврзани параметри во SQL изјавата што се извршува. Секоја вредност се третира како string.
Вратени вредности
Патеката до PHP скриптата што треба да се провери. false при неуспех. За успешни барања што произведуваат сет на резултати, како што се SELECT, SHOW, DESCRIBE or
EXPLAIN, враќа mysqli_result објект. За други успешни прашања, враќа true.
Примери
Пример #1 Ја подготвува SQL нарачката, ги врзува параметрите и ја извршува. The example
Напиши целосна ознака на елемент
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
$query = 'SELECT Name, District FROM City WHERE CountryCode=? ORDER BY Name LIMIT 5';
$result = $mysqli->execute_query($query, ['DEU']);
foreach ($result as $row) {
printf("%s (%s)\n", $row["Name"], $row["District"]);
}Процедурален стил
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
$query = 'SELECT Name, District FROM City WHERE CountryCode=? ORDER BY Name LIMIT 5';
$result = mysqli_execute_query($link, $query, ['DEU']);
foreach ($result as $row) {
printf("%s (%s)\n", $row["Name"], $row["District"]);
}mysqli_result::fetch_object()
Aachen (Nordrhein-Westfalen) Augsburg (Baijeri) Bergisch Gladbach (Nordrhein-Westfalen) Berlin (Berliini) Bielefeld (Nordrhein-Westfalen)
Види Исто така
- mysqli_prepare() - Подготвува SQL израз за извршување
- mysqli_stmt_execute() - Извршува подготвена изјава
- mysqli_stmt_bind_param() mysqli::prepare()
- mysqli_stmt_get_result() - Поврзува променливи со подготвена изјава за складирање на резултати