gpt4 book ai didi

php - mysqli_stmt_bind_param : type mismatch do not raise error

转载 作者:行者123 更新时间:2023-11-29 08:16:36 26 4
gpt4 key购买 nike

我正在开发一个 php 应用程序,我尝试并成功使用带有该功能的 mysqli :

function executeUpdateInsert($SQLStatement, $SQLBindString, $bindValueArray){
$ret = -1;
$dbConnection = getDbConnection();
$stmt = mysqli_prepare( $dbConnection, $SQLStatement);
$bindParamArray = array_merge(array($stmt, $SQLBindString), $bindValueArray );
call_user_func_array ( mysqli_stmt_bind_param , $bindParamArray );

if( mysqli_stmt_execute($stmt) ) {
$ret = mysqli_insert_id ($dbConnection);
mysqli_stmt_close($stmt);
$dbConnection->close();
}else{
mysqli_stmt_close($stmt);
$dbConnection->close();
}
return $ret;
}

函数调用如下所示:

executeUpdateInsert( "UPDATE mytable(int1, int2, string2)VALUES (?,?,?)", "iis", array ( 12,42,"string") ) );

这实际上是有效的,尽管当我尝试在数据库中插入像 125r896 这样的非整数值时,我发现了一个非常奇怪的行为。在完美的世界中,我希望 mysqli_stmt_execute($stmt) 返回 FALSE 并失败,但它不会在整数字段中插入 125。

我做错了什么还是 PHP + MySQL 中语句对象的正常行为?
因为我清楚地认为这是一个错误而不是一个功能。

最佳答案

mysqli_stmt_bind_param() 不会验证您的数据,而是强制数据为某种类型。您需要验证您的数据是否符合您的预期。

关于php - mysqli_stmt_bind_param : type mismatch do not raise error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20499567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com