我正在编写一个类方法,该方法将根据该方法的参数返回数据。
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
函数中概括数据类型?
答案 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