mysqli_stmt::prepare

mysqli_stmt_prepare

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::prepare -- mysqli_stmt_preparePrepares an SQL statement for execution

Açıklama

Nesne yönelimli kullanım

publicmysqli_stmt::prepare(string$query): bool

Yordamsal kullanım

mysqli_stmt_prepare(mysqli_stmt$statement, string$query): bool

Prepares a statement for execution. The query must consist of a single SQL statement.

The statement template can contain zero or more question mark (?) parameter markers⁠—also called placeholders. The parameter markers must be bound to application variables using mysqli_stmt_bind_param() before executing the statement.

Bilginize:

In the case where a statement is passed to mysqli_stmt_prepare() that is longer than max_allowed_packet of the server, the returned error codes are different depending on whether you are using MySQL Native Driver (mysqlnd) or MySQL Client Library (libmysqlclient). The behavior is as follows:

  • mysqlnd on Linux returns an error code of 1153. The error message means got a packet bigger than max_allowed_packet bytes.

  • mysqlnd on Windows returns an error code 2006. This error message means server has gone away.

  • libmysqlclient on all platforms returns an error code 2006. This error message means server has gone away.

Bağımsız Değişkenler

deyim

Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

query

The query, as a string. It must consist of a single SQL statement.

The SQL statement may contain zero or more parameter markers represented by question mark (?) characters at the appropriate positions.

Bilginize:

The markers are legal only in certain places in SQL statements. For example, they are permitted in the VALUES() list of an INSERT statement (to specify column values for a row), or in a comparison with a column in a WHERE clause to specify a comparison value. However, they are not permitted for identifiers (such as table or column names).

Dönen Değerler

Başarı durumunda true, başarısızlık durumunda false döner.

Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (MYSQLI_REPORT_ERROR) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip MYSQLI_REPORT_STRICT ise bunun yerine mysqli_sql_exception istisnası oluşur.

Örnekler

Örnek 1 mysqli_stmt::prepare() example

Nesne yönelimli kullanım

<?php

mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

$city = "Amersfoort";


$stmt = $mysqli->stmt_init();
$stmt->prepare("SELECT District FROM City WHERE Name=?");


$stmt->bind_param("s", $city);


$stmt->execute();


$stmt->bind_result($district);


$stmt->fetch();

printf("%s is in district %s\n", $city, $district);

Yordamsal kullanım

<?php

mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

$city = "Amersfoort";


$stmt = mysqli_stmt_init($link);
mysqli_stmt_prepare($stmt, "SELECT District FROM City WHERE Name=?");


mysqli_stmt_bind_param($stmt, "s", $city);


mysqli_stmt_execute($stmt);


mysqli_stmt_bind_result($stmt, $district);


mysqli_stmt_fetch($stmt);

printf("%s is in district %s\n", $city, $district);

Yukarıdaki örneklerin çıktısı:

Amersfoort is in district Utrecht

Ayrıca Bakınız

To Top