如何在bind_param中概括数据类型?

时间:2018-06-22 15:43:51

标签: php php-7

我正在编写一个类方法,该方法将根据该方法的参数返回数据。

      public function getRow($value, $name='id'){
        con();
        $statement = $GLOBALS['con']->prepare('SELECT * FROM '.$this->tableName.' WHERE '.$name.' = ?')
            or die('Statement preparation failed.'.$GLOBALS['con']->error);
        $statement->bind_param('i', $id);
        $statement->execute();
        return $statement->get_result()->fetch_assoc();
    }

此处方法称为

getRow(10)

因此查询将会

SELECT * FROM table_name WHERE id = 10

当它是

getRow('StackOverflow', 'name');

因此查询将会

SELECT * FROM table_name WHERE name = 'Stackoverflow';

但是问题是未定义变量的数据类型,有时是int,有时是string

那么如何在bind_param函数中概括数据类型?

2 个答案:

答案 0 :(得分:1)

如果您未指定类型,而只想绑定任何动态值,请为字符串使用“ s”。

由于MySQL仍然可以使用引号引起来的整数和浮点数,因此没有必要在PHP中进行类型检查,因为无论如何它都会以相同的结果结尾。

答案 1 :(得分:-1)

尽管我确实建议您使用此功能与PDO一起使用,但可以轻松对其进行修改以满足您的要求。

//
// Return the proper PDO value for binding based on the data passed
//

 function PDO_bind($variable) {

    if(is_numeric($variable)) return PDO::PARAM_INT;
    if(is_bool($variable))    return PDO::PARAM_BOOL;
    if(is_null($variable))    return PDO::PARAM_NULL;

    return PDO::PARAM_STR;

}  // end of PDO_bind function