新手警报
mySQL 表“tokens”包含一个字段“dl”(DL),它是一个整数(值:0、1 或 2)
对于字段“token”==$stripped_token的行,“dl”的当前值为0
我希望读取记录,增加“DL”字段中找到的数字(零)并更新记录。这是我正在尝试的:
function sql_update_token($stripped_token)
{
global $mysqli ;
$curr_dl = $mysqli->query("SELECT dl FROM tokens WHERE token = ".$stripped_token) or die (mysqli_error());
$new_num = $curr_dl + 1;
$result = $mysqli->query("UPDATE tokens SET dl=".$new_num." WHERE token = ".$stripped_token) or die (mysqli_error());
}
字段DL的值现在是“2”!为什么是 2?
在解决上述问题时,我尝试了以下方法:
function sql_get_dl($stripped_token)
{
global $mysqli ;
$curr_dl_num = $mysqli->query("SELECT dl FROM tokens WHERE token = ".$stripped_token) or die (mysqli_error());
return $curr_dl_num;
}
$test = sql_get_token($stripped_token);
echo('[$test] == [ '.$test.' ]<br />');
问题是 $test 不包含数字“0”,正如我所希望的那样。相反,它包含:“current_field”、“field_count”、“lengths”、“num_rows”和“type”(这些文本字符串,位于数组中。
我的错误是什么?
最佳答案
一个问题是 msysqli->query 不会返回您认为它返回的值。它返回一个结果对象。然后您需要获取该结果中的数据。即:
global $mysqli ;
$result = $mysqli->query("SELECT dl FROM tokens WHERE token = ".$stripped_token) or die (mysqli_error());
$row = $result->fetch_row();
$curr_dl_num = $row[0];
将 $result 视为一个表格。 fetch_row() 获取第一行,$row[0] 获取该行的第一个单元格。这确实很不方便,因为您只能获取一张包含一个值的表,但对于返回多个结果的其他查询,能够使用 fetch_row() 逐步遍历它们非常有用。
此外,既然您说这没有按照您的预期运行,那么您如何生成 $stripped_token 值?如果您从 mySQL 查询中读取它,您的问题可能是相同的 - 它可能是一个结果对象,而不是您期望的单个值。
编辑: 别介意关于 $stripped_token 的一点,我误解了你问题的最后部分。
关于php - MySQL 中的理解断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6392302/