【问题标题】:What does (string) mean in php/mysql prepared statement?(字符串)在 php/mysql 准备好的语句中是什么意思?
【发布时间】:2019-07-22 04:40:18
【问题描述】:

以前从未见过。无法找到和解释,前几天我在代码中看到了它,例如:

    $statement = $db->prepare("insert into table (col1, col2, col3) values (?, ?, ?)");
    $data = array((string) $var1, (string) $var2, (string) $var3);
    $statement->execute($data);

看到这个 (string) 部分了吗?有没有人能解释一下?

【问题讨论】:

标签: php mysql string pdo prepared-statement


【解决方案1】:

这意味着在 $var1 中写入的所有内容和其他内容都转换为字符串,因此程序可以处理输入而不会出错。

【讨论】:

    【解决方案2】:

    这是一个简单的转换,在代码中,而查询是一个字符串,所以 (string) 确保您正在操作 String ,这是 PHP DOC:

    (int), (integer) - cast to integer
    (bool), (boolean) - cast to boolean
    (float), (double), (real) - cast to float
    (string) - cast to string
    (array) - cast to array
    (object) - cast to object
    (unset) - cast to NULL
    

    http://php.net/manual/en/language.types.type-juggling.php

    例子:

    $int = 4;
    $string = (string)$int; 
    echo gettype($int); // output snteger
    echo gettype($string); // output string
    

    一般来说,类型转换的意思是使用a的值 具有不同数据类型的变量。

    【讨论】:

    • 更好的答案!谢谢!!
    • 享受伟大的 PHP
    【解决方案3】:

    可以绑定参数

    $stmt = $conn->prepare("INSERT INTO table (col1, col2, col3) VALUES (?, ?, ?)");
    $stmt->bind_param("sss", $var1, $var2, $var3);
    $stmt->execute();
    

    类型规范字符

    i 对应变量的类型为整数

    d 对应变量的类型为double

    s 对应的变量是字符串类型

    b 对应的变量是一个blob,会分包发送

    【讨论】:

    • 您也可以在执行中执行该步骤.. " input_parameters 一个值数组,其元素数量与正在执行的 SQL 语句中的绑定参数一样多。所有值都被视为 PDO::PARAM_STR . " source
    • 这个接口是mysqli,OP使用的是PDO
    猜你喜欢
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 2021-03-27
    • 1970-01-01
    相关资源
    最近更新 更多