php - MySQL 中的理解断开连接

标签 php mysql

新手警报

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/

相关文章:

mysql - SQL - 从表 1 中删除一些在表 2 上满足某些条件的原始数据

php - Bootstrap 轮播问题 - 仅在查看时加载图像?

PHP和Mysql,关于价格字段中字段出现2次$、美元符号时删除记录

php - 没有空格的mysql搜索

mysql - 我的 CakePHP HABTM 查询出了什么问题?

python - 使用Python以MySQL json列格式插入Json数据

MySQL - 添加约束和外键

php - 如何使用 UPDATE 表 SET column = NULL 释放未使用的空间?

javascript - 服务器端表使用 JS、Php 或 Ajax 从表(但不是数据库)中删除行

java - 创建新数据库连接时 Eclipse 不显示 MySQL 驱动程序