Извршување на изрази
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Извршување на изрази
Референца за `mysqli.quickstart.statements.php` со подобрена типографија и навигација.
Извршување на изрази
Statements can be executed with the mysqli::__construct(), Множествата резултати вратени од складирана процедура се преземаат со користење на and - Проверете дали има повеќе резултати од прашање од повеќекратно прашањеќе треба да се прилагоди, и mysqli::__construct() Изјавите можат да се извршат со mysqli::__construct() е идентично со повикување Множествата резултати вратени од складирана процедура се преземаат со користење на следено од функцијата е најчеста и комбинира извршна изјава со баферирано преземање на нејзиниот сет на резултати, ако постои, во еден повик. Повикување.
mysqli::store_result()
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("example.com", "user", "password", "database");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");Пример #1 Извршување на прашања
Баферирани множества на резултати mysqli::__construct() По извршувањето на изјавата, резултатите можат или да се преземат одеднаш или да се читаат ред по ред од серверот. Баферирањето на множествата на резултати од страна на клиентот му овозможува на серверот да ги ослободи ресурсите поврзани со резултатите од изјавата што е можно порано. Генерално, клиентите се бавни во консумирањето на множествата на резултати. Затоа, се препорачува користење на баферирани множества на резултати.
ги комбинира извршувањето на изјавата и баферирањето на множествата на резултати.
PHP апликациите можат слободно да се движат низ баферирани резултати. Навигацијата е брза бидејќи множествата на резултати се чуваат во меморијата на клиентот. Ве молиме, имајте предвид дека често е полесно да се скалира преку клиентот отколку да се скалира серверот.
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("example.com", "user", "password", "database");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3)");
$result = $mysqli->query("SELECT id FROM test ORDER BY id ASC");
echo "Reverse order...\n";
for ($row_no = $result->num_rows - 1; $row_no >= 0; $row_no--) {
$result->data_seek($row_no);
$row = $result->fetch_assoc();
echo " id = " . $row['id'] . "\n";
}
echo "Result set order...\n";
foreach ($result as $row) {
echo " id = " . $row['id'] . "\n";
}Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Reverse order... id = 3 id = 2 id = 1 Result set order... id = 1 id = 2 id = 3
Пример #2 Навигација низ баферирани резултати
Небаферирани множества на резултати
Ако меморијата на клиентот е ограничен ресурс и ослободувањето на серверските ресурси што е можно порано за да се одржи ниско оптоварување на серверот не е потребно, можат да се користат небаферирани резултати. Скролањето низ небаферирани резултати не е можно пред да се прочитаат сите редови.
<?php
$mysqli->real_query("SELECT id FROM test ORDER BY id ASC");
$result = $mysqli->use_result();
echo "Result set order...\n";
foreach ($result as $row) {
echo " id = " . $row['id'] . "\n";
}Пример #3 Помалку кружни патувања користејќи multi-INSERT SQL
На mysqli::__construct(), Множествата резултати вратени од складирана процедура се преземаат со користење на
and - Проверете дали има повеќе резултати од прашање од повеќекратно прашање Пример #3 Навигација низ небаферирани резултати COM_QUERY функциите се користат за извршување на неподготвени изјави. На ниво на протоколот MySQL Client Server, командата
и текстуалниот протокол се користат за извршување на изјави. Со текстуалниот протокол, MySQL серверот ги претвора сите податоци од множествата на резултати во низи пред да ги испрати. Оваа конверзија се врши без оглед на типот на податоците на колоната од резултатот на SQL. MySQL клиентските библиотеки ги примаат сите вредности на колоните како низи. Нема дополнително претворање од страна на клиентот за да се вратат колоните во нивните оригинални типови. Наместо тоа, сите вредности се обезбедени како PHP низи.
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("example.com", "user", "password", "database");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT, label CHAR(1))");
$mysqli->query("INSERT INTO test(id, label) VALUES (1, 'a')");
$result = $mysqli->query("SELECT id, label FROM test WHERE id = 1");
$row = $result->fetch_assoc();
printf("id = %s (%s)\n", $row['id'], gettype($row['id']));
printf("label = %s (%s)\n", $row['label'], gettype($row['label']));Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
id = 1 (string) label = a (string)
Пример #4 Текстуалниот протокол враќа низи по дифолт
MYSQLI_OPT_INT_AND_FLOAT_NATIVE Можно е да се претворат цели броеви и децимални колони назад во PHP броеви со поставување на
опција за поврзување, ако се користи mysqlnd библиотека. Ако е поставено, mysqlnd библиотеката ќе ги провери типовите на метаподатоците на резултатот и ќе ги претвори нумеричките SQL колони во PHP броеви, ако опсегот на вредностите на PHP типот на податоци го дозволува тоа. На овој начин, на пример, SQL INT колоните се враќаат како цели броеви.
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli();
$mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);
$mysqli->real_connect("example.com", "user", "password", "database");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT, label CHAR(1))");
$mysqli->query("INSERT INTO test(id, label) VALUES (1, 'a')");
$result = $mysqli->query("SELECT id, label FROM test WHERE id = 1");
$row = $result->fetch_assoc();
printf("id = %s (%s)\n", $row['id'], gettype($row['id']));
printf("label = %s (%s)\n", $row['label'], gettype($row['label']));Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
id = 1 (integer) label = a (string)
Види исто така
- API не вклучува емулација за емулација на подготвени изјави од страна на клиентот.
- Пример #5 Оригинални типови на податоци со mysqlnd и опција за поврзување
- mysqli::options()
- mysqli::__construct()
- - Проверете дали има повеќе резултати од прашање од повеќекратно прашање
- Враќа нетампониран објект со резултати или
- функцијата е најчеста и комбинира извршна изјава со баферирано преземање на нејзиниот сет на резултати, ако постои, во еден повик. Повикување