Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL中的理解断开_Php_Mysql - Fatal编程技术网

Php MySQL中的理解断开

Php MySQL中的理解断开,php,mysql,Php,Mysql,新手警报 mySQL表tokens包含一个字段dl,它是一个整数值:0、1或2 对于字段token==$stripped\u token的行,dl的当前值为0 我希望读取记录,增加字段DL zero中的数字,并更新记录。以下是我正在尝试的: function sql_update_token($stripped_token) { global $mysqli ; $curr_dl = $mysqli->query("SELECT dl FROM tokens WHERE t

新手警报

mySQL表tokens包含一个字段dl,它是一个整数值:0、1或2

对于字段token==$stripped\u token的行,dl的当前值为0

我希望读取记录,增加字段DL zero中的数字,并更新记录。以下是我正在尝试的:

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。相反,它包含:当前字段、字段计数、长度、行数,并在数组中键入这些文本字符串


我的错误是什么?

一个问题是msysqli->query没有返回您认为它返回的值。它返回一个结果对象。然后,您需要获取结果中的数据。i、 e:

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_行逐步遍历它们就非常有用了

还有,既然你说你的$U代币的行为不像你预期的那样,那么你是如何生成你的$U代币价值的呢?如果您是从mySQL查询中读取它,您的问题可能是相同的——它可能是一个结果对象,而不是您期望的单个值

编辑:
不要介意$U代币,我误解了你问题的最后一部分

除非我误解,$result=$mysqli->queryupdatetokens SET dl=dl+1,其中token=.$stripped\u token或die mysqli\u error;不适用于您?生成$stripped_令牌的代码是什么?$stripped_令牌由一个剥离的函数生成。和|从一根绳子。它工作正常,并在其他函数中用于返回整行。其他功能正常工作。这些函数的不同之处在于,它们只应返回dl的字段值,并应更新该值。但是$U令牌的值是正确的。@Filgera-你解决了它,谢谢。谢谢。正如您所意识到的,我误解了$mysqli->query返回的格式。这正是我需要知道的。Gracias@user674073值得指出的是,虽然这个答案解决了这个问题,但您可以通过简单地执行updatetokens SET dl=dl+1,其中token=。。。而不是从数据库中提取一个值,对其进行递增,然后将其放回。@djacobson这是真的,假设您从未真正想要使用该值。如果您想在PHP脚本中读取该值并对其进行处理,那么在某个时候您必须将其从这样的查询中提取出来。