Что именно bind_param () делает в mysqli?

Я понимаю подготовленные заявления с использованием PHP и MySQL. Я попытался прочитать некоторые учебные пособия, руководство и этот: Bind_Param в PHP, Но. пока не найдено ни одного удовлетворительного ответчика.

Кто-то написал в ответ как:

When you prepare an SQL statement, you can insert a placeholder (?)
where a column value would go, then use bind_param() to safely
substitute that placeholder for the real column's value. This prevents
any possibility of an SQL injection
,

Я нашел некоторый код в учебниках, как это:

$stmt = $con->prepare("INSERT INTO user_accounts VALUES (?,?,?,?)");

$stmt->bind_param('xyz', $sample1, $sample2, $sample3, $sample4);   // bind to the parameter

Я понял, что мы пишем ‘?’ вместо наших переменных, так что фактические значения могут быть даны позже. и mysql готовят план для выполнения запроса, а переменные задаются в качестве параметров.

Но, скажите мне, что говорит эта строка кода?

bind_param('xyz', $sample1, $sample2, $sample3, $sample4);

четыре переменные даются с чем-то ‘xyz’ в качестве параметров … Что именно здесь делает параметр ‘xyz’? Нужно ли писать и будет ли оно позже использовано? я не нашел его в другом месте.

Кто-нибудь может мне объяснить? Пожалуйста, помогите.

РЕДАКТИРОВАТЬ:

Я только хочу ответить за это. Если вы можете объяснить, пожалуйста, помогите:

введите описание изображения здесь

0

Решение

Я думаю, вы понимаете концепцию параметров привязки, поэтому я не буду вдаваться в подробности. Тем не менее, вы можете рассмотреть этот для получения дополнительной справочной информации.

API-интерфейс mysqli для привязки параметров, возможно, не очень элегантен. Это выглядит так:

bool mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] )

Это означает, что первый аргумент этой функции, $types, дает MySQL информацию о том, что типы ваши параметры / как это должно относиться к ним. После этого приведены индивидуальные параметры.

$types Аргумент — это строка отдельных символов, каждый из которых обозначает тип. Есть четыре возможных типа: i, d, s а также b, которые обозначают целое число, двойной, строка а также двоичный. Так что если вы хотите связать два целых числа и одну строку, в таком порядке, $type параметр должен быть iis, Затем вы следуете этим фактическим значениям:

$int1 = 42;
$int2 = 11;
$str  = 'foo';

$stmt->bind_param('iis', $int1, $int2, $str);
8

Другие решения

xyz указывает тип данных столбца. например, если у нас есть четыре столбца и все они имеют строковый тип, мы пишем:

$stmt->bind_param('ssss', $sample1, $sample2, $sample3, $sample4);

если один столбец имеет integer типа мы используем i вместо s, например, если третий столбец integer , мы пишем:

$stmt->bind_param('ssis', $sample1, $sample2, $sample3, $sample4);

указать, что первый и второй столбцы являются строковыми (s) и третий integer (i) и четвертая строка (s).

для первого параметра bind_parameter функция, которую мы используем s для строковых типов, i обозначает integer, d для double тип и b для blob,

так что для вашего случая, sssd означает, что четвертый столбец double а остальные string

4

По вопросам рекламы [email protected]