Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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 Mysqli脚本取消定义偏移量_Php_Mysqli - Fatal编程技术网

PHP Mysqli脚本取消定义偏移量

PHP Mysqli脚本取消定义偏移量,php,mysqli,Php,Mysqli,我有一个脚本,在执行时将检查3个随机行,我需要这3行有自己的定义值以供进一步使用。我编写的脚本正常工作,只是我得到了行变量的未定义偏移量:1和未定义偏移量:2。如果不是因为这些错误,我可以忽略它,但是我让脚本在设定的时间通过任务管理器运行,并且错误导致它无法完成 我已经在研究并试图找到相关信息,但也许我没有寻找正确的术语 $query1 = mysqli_query($db, "SELECT szName, ip, dwRoleID FROM log_item, gamedata, `user`

我有一个脚本,在执行时将检查3个随机行,我需要这3行有自己的定义值以供进一步使用。我编写的脚本正常工作,只是我得到了行变量的未定义偏移量:1和未定义偏移量:2。如果不是因为这些错误,我可以忽略它,但是我让脚本在设定的时间通过任务管理器运行,并且错误导致它无法完成

我已经在研究并试图找到相关信息,但也许我没有寻找正确的术语

$query1 = mysqli_query($db, "SELECT szName, ip, dwRoleID FROM log_item, gamedata, `user` WHERE dwParam3 = '667287791' and gamedata.dwID = log_item.dwRoleID and gamedata.szName = `user`.`Name` GROUP BY `user`.ip ORDER BY RAND() LIMIT 3") or die(mysqli_error($db));
while ($row[] = mysqli_fetch_array($query1, MYSQLI_ASSOC)){

$id1 = $row[0]['dwRoleID'];
$id2 = $row[1]['dwRoleID'];
$id3 = $row[2]['dwRoleID'];
$Winner1 = $row[0]['szName'];
$Winner2 = $row[1]['szName'];
$Winner3 = $row[2]['szName'];

$query2 = mysqli_query($db, "DELETE FROM log_item WHERE dwRoleID IN ('$id1', '$id2', '$id3') and dwParam3 = '667287791'") or die(mysqli_error($db));

}

$msg = "Congratulations

$Winner1, $Winner2 and $Winner3 have won the giveaway.

Winners have 12 hours to claim their reward or a new winner will be picked.";
$curl = curl_init('https://');
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode(array('content' => $msg)));
curl_exec($curl);

我知道它的行输出格式是错误的,但除了错误之外,它正在做我希望它做的事情。

您做的while循环是错误的。在第一次迭代中,索引0处的数组$row中只有一个元素。这就是索引1和2缺失的原因

试试这个:

while ($row[] = mysqli_fetch_array($query1, MYSQLI_ASSOC)){
    // empty
}

$id1 = $row[0]['dwRoleID'];
$id2 = $row[1]['dwRoleID'];
$id3 = $row[2]['dwRoleID'];
$Winner1 = $row[0]['szName'];
$Winner2 = $row[1]['szName'];
$Winner3 = $row[2]['szName'];

$query2 = mysqli_query($db, "DELETE FROM log_item WHERE dwRoleID IN ('$id1', '$id2', '$id3') and dwParam3 = '667287791'") or die(mysqli_error($db));
更新2018-08-10:改用fetch_all谢谢达曼

$row = mysqli_fetch_all($query1, MYSQLI_ASSOC));

正如你所说,我更改了它,但仍然得到了2个未定义的偏移量。你确定你的查询会产生多个记录吗?实际上,它现在正在工作,我输入了错误的变量进行搜索,但它没有返回正确的量,并且它现在应该工作。谢谢为什么循环?您可以只获取所有信息,它仅由系统上的任务调度器在本地运行,不能以任何其他方式访问。