PHP.mk документација

SQLite3Stmt::bindValue

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

sqlite3stmt.bindvalue.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека sqlite3stmt.bindvalue.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
SQLite3Stmt::bindValue

Референца за `sqlite3stmt.bindvalue.php` со подобрена типографија и навигација.

sqlite3stmt.bindvalue.php

SQLite3Stmt::bindValue

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3Stmt::bindValueBinds the value of a parameter to a statement variable

= NULL

public SQLite3Stmt::bindValue(string|int $param, mixed $value, int $type = SQLITE3_TEXT): bool

Binds the value of a parameter to a statement variable.

Безбедност: стандардниот сет на знаци

Before PHP 7.2.14 and 7.3.0, respectively, once the statement has been executed, SQLite3Stmt::reset() needs to be called to be able to change the value of bound parameters.

Параметри

param

Проверува го знакот на бројот. string (за именувани параметри) или int (за позициони параметри) што го идентификува променливата на изјавата на која треба да се поврзе вредноста. Ако именуван параметар не започнува со две точки (:) или знакот за „at“ (@), две точки (:) автоматски се додава. Позициони параметри започнуваат со 1.

value

The value to bind to a statement variable.

type

The data type of the value to bind.

  • SQLITE3_INTEGER: Вредноста е потпишан цел број, зачуван во 1, 2, 3, 4, 6 или 8 бајти во зависност од големината на вредноста.

  • SQLITE3_FLOAT: Вредноста е вредност со пловечка точка, зачувана како 8-бајтен IEEE број со пловечка точка.

  • SQLITE3_TEXT: Вредноста е текстуална низа, зачувана со кодирањето на базата на податоци (UTF-8, UTF-16BE или UTF-16-LE).

  • SQLITE3_BLOB: Вредноста е blob од податоци, зачувана точно како што е внесена.

  • SQLITE3_NULL: Вредноста е NULL вредност.

Од PHP 7.0.7, ако type се изостави, автоматски се открива од типот на value: bool and int се третираат како SQLITE3_INTEGER, float as SQLITE3_FLOAT, null as SQLITE3_NULL а сите други како SQLITE3_TEXT. Претходно, ако type е изоставен, стандардно е поставен на SQLITE3_TEXT.

Забелешка:

Враќа value is null, секогаш се третира како SQLITE3_NULL, без оглед на даденото type.

Вратени вредности

Патеката до PHP скриптата што треба да се провери. true if the value is bound to the statement variable, or false при неуспех.

Дневник на промени

Верзија = NULL
7.4.0 param сега исто така поддржува @param notation.

Примери

Пример #1 SQLite3Stmt::bindValue() example

<?php
$db
= new SQLite3(':memory:');

$db->exec('CREATE TABLE foo (id INTEGER, bar STRING)');
$db->exec("INSERT INTO foo (id, bar) VALUES (1, 'This is a test')");

$stmt = $db->prepare('SELECT bar FROM foo WHERE id=:id');
$stmt->bindValue(':id', 1, SQLITE3_INTEGER);

$result = $stmt->execute();
var_dump($result->fetchArray(SQLITE3_ASSOC));
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

array(1) {
  ["bar"]=>
  string(14) "This is a test"
}

Види Исто така

Белешки од корисници 4 белешки

zeebinz at gmail dot com
пред 15 години
Note that this also works with positional placeholders using the '?' token:

<?php

$stmt = $db->prepare('SELECT * FROM mytable WHERE foo = ? AND bar = ?');
$stmt->bindValue(1, 'somestring', SQLITE3_TEXT);
$stmt->bindValue(2, 42, SQLITE3_INTEGER);

?>

Positional numbering starts at 1.
andrevanzuydam at gmail dot com
пред 10 години
I just want to say again, 

Numbering for parameters starts at ONE!

This has caught me out quite a few times!
bohwaz
пред 11 години
It might be a good idea to feed bindValue the type of the variable manually, or you might encounter weird stuff as the passed value is often treated as SQLITE3_TEXT and results in buggy queries.

For example:
<?php
$st = $db->prepare('SELECT * FROM test WHERE (a+1) = ?');
$st->bindValue(1, 2);
?>

Will never return any result as it is treated by SQLite as if the query was 'SELECT * FROM test WHERE (a+1) = "2"'. Instead you have to set the type manually:

<?php
$st = $db->prepare('SELECT * FROM test WHERE (a+1) = ?');
$st->bindValue(1, 2, \SQLITE3_INTEGER);
?>

And it will work. This bug is reported in https://bugs.php.net/bug.php?id=68849

Here is a simple function to help you make bindValue work correctly:

<?php
function getArgType($arg)
{
    switch (gettype($arg))
    {
        case 'double': return SQLITE3_FLOAT;
        case 'integer': return SQLITE3_INTEGER;
        case 'boolean': return SQLITE3_INTEGER;
        case 'NULL': return SQLITE3_NULL;
        case 'string': return SQLITE3_TEXT;
        default:
            throw new \InvalidArgumentException('Argument is of invalid type '.gettype($arg));
    }
}
?>
vaibhavatul47 at gmail dot com
пред 9 години
I used following logic to prepare statements, It handles both Values and Arrays ( taking help from bohwaz note) :

<?php
    function getArgType($arg) {
        switch (gettype($arg)) {
            case 'double':  return SQLITE3_FLOAT;
            case 'integer': return SQLITE3_INTEGER;
            case 'boolean': return SQLITE3_INTEGER;
            case 'NULL':    return SQLITE3_NULL;
            case 'string':  return SQLITE3_TEXT;
            default:
                throw new \InvalidArgumentException('Argument is of invalid type '.gettype($arg));
        }
    }

foreach ($params as $index => $val) {
                // indexing start from 1 in Sqlite statement
                if (is_array($val)) {
                    $ok = $stmt->bindParam($index + 1, $val);
                } else {
                    $ok = $stmt->bindValue($index + 1, $val, getArgType($val));
                }
                
                if (!$ok) {
                    throw new Exception("Unable to bind param: $val");
                }
            }
?>
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.