新手提醒
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”(这些文本字符串,在数组中。
我的错误是什么?
答案 0 :(得分:1)
一个问题是msysqli-&gt;查询不会返回您认为它返回的值。它返回一个结果对象。然后,您需要获取该结果中的数据。即:
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,我误解了你问题的最后一部分。