如何在PHP中向SQL更新函数添加错误处理? 问题概述
我有一个更新SQL数据库中用户用户名的函数。我试图添加一些错误处理(比如返回true/false),但我不知道如何去做 当前函数如何在PHP中向SQL更新函数添加错误处理? 问题概述,php,mysqli,Php,Mysqli,我有一个更新SQL数据库中用户用户名的函数。我试图添加一些错误处理(比如返回true/false),但我不知道如何去做 当前函数 函数updateUid($conn、$usersUid、$rowId){ $sql=“更新用户集usersUid=?其中usersId=?”; $stmt=mysqli\u stmt\u init($conn); 如果(!mysqli_stmt_prepare($stmt,$sql)){ //错误-错误的SQL调用 退出(); } mysqli_stmt_bind_p
函数updateUid($conn、$usersUid、$rowId){
$sql=“更新用户集usersUid=?其中usersId=?”;
$stmt=mysqli\u stmt\u init($conn);
如果(!mysqli_stmt_prepare($stmt,$sql)){
//错误-错误的SQL调用
退出();
}
mysqli_stmt_bind_param($stmt,“ss”,$usersUid,$rowId);
mysqli_stmt_execute($stmt);
返回true;
mysqli_stmt_close($stmt);
}
正如你所看到的,现在它只是返回真的,不考虑天气或函数是否工作
我试过的
我尝试使用mysqli\u stmt\u get\u result($stmt)
,但我认为我没有正确使用它:
函数updateUid($conn、$usersUid、$rowId){
$sql=“更新用户集usersUid=?其中usersId=?”;
$stmt=mysqli\u stmt\u init($conn);
如果(!mysqli_stmt_prepare($stmt,$sql)){
//错误-错误的SQL调用
退出();
}
mysqli_stmt_bind_param($stmt,“ss”,$usersUid,$rowId);
mysqli_stmt_execute($stmt);
$resultData=mysqli\u stmt\u get\u result($stmt);
如果($row=mysqli\u fetch\u assoc($resultData)){
返回$row;
}否则{
$result=false;
返回$result;
}
mysqli_stmt_close($stmt);
}
据我所知,mysqli\u stmt\u get\u result()
没有返回任何内容,这是有道理的,因为我不是在获取数据,而是在放置数据
预期结果
如前所述,我真的希望能够得到关于函数是否工作的真/假返回。在PHP中测试SQL注入结果的最佳方法是什么?
mysqli\u stmt\u受影响的行()
将告诉您更新了多少行
<?php
function updateUid($conn, $usersUid, $rowId) {
$sql = "UPDATE users SET usersUid = ? WHERE usersId = ?";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
//error - bad SQL call
exit();
}
mysqli_stmt_bind_param($stmt, "ss", $usersUid, $rowId);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_affected_rows($stmt) > 0;
mysqli_stmt_close($stmt);
return $result;
}
mysqli\u stmt\u close($stmt)如果在
return
之后,code>将永远不会执行。为什么函数会返回true或false?这听起来是个糟糕的设计。如果函数起作用,则不应返回任何内容。如果失败,则也不应返回任何内容,代码应触发异常,mysqli会自动执行此操作。请删除所有的If
语句,并启用自动错误报告,而不是mysqli\u stmt\u close($stmt)代码>是多余的。您的语句是在本地范围内创建的,不会泄漏到函数之外。你不需要关闭它,你将如何处理这个函数中的真/假值?