Как исправить ошибку Параметр должен быть массивом или объектом, реализующим счетную - PullRequest
0 голосов
/ 14 октября 2018

Я знаю, что на эту ошибку уже отвечали, но я следую руководству по созданию моей первой базы данных sql с MAMP и получил эту ошибку при открытии базы данных.Может ли кто-нибудь помочь мне решить эту проблему, пожалуйста?Я уверен, что это очень просто, но я точно следовал руководству и не могу найти опечаток или ошибок.

Возможно, ошибка связана с тем, как я настраивал базу данных, или это может бытьчто я делал в Unity?Я предполагаю, что 615 относится к строке кода или номер ошибки?Как можно было бы устранить эту проблему в будущем или узнать, где находится ошибка?

В руководстве, которому я следовал, я создал сценарий в Sublime Text и сохранил его локально, а затем получил доступ к нему с помощью MAMP.Я привык к кодированию на C ++ и в последнее время на C #, поэтому для меня это иероглифы.

Warning in .\libraries\sql.lib.php#615
 count(): Parameter must be an array or an object that implements Countable

Backtrace

.\libraries\sql.lib.php#2128: PMA_isRememberSortingOrder(array)
.\libraries\sql.lib.php#2079: PMA_executeQueryAndGetQueryResponse(
array,
boolean true,
string 'unityaccess',
string 'players',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
string '',
string './themes/pmahomme/img/',
NULL,
NULL,
NULL,
string 'SELECT * FROM `players`',
NULL,
NULL,
)
.\sql.php#219: PMA_executeQueryAndSendQueryResponse(
array,
boolean true,
string 'unityaccess',
string 'players',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
string '',
string './themes/pmahomme/img/',
NULL,
NULL,
NULL,
string 'SELECT * FROM `players`',
NULL,
NULL,
)

Этот код привел к сообщению об ошибке.

<?php

$con = mysqli_connect('localhost', 'root', 'root', 'unityaccess');

//check that connection happened
if (mysqli_connect_errno())
{
    echo "1: Connection failed"; //error code #1 = connection failed
    exit();
}

$username = $_POST ["username"];
$password = $_POST["password"];

//check if name exists
$namecheckquery = "SELECT username FROM players WHERE username='" . $username . "'";

$namecheck = mysqli_query($con, $namecheckquery) or die("2: Name check query failed"); //error code #2 - name check query failed

if (mysqli_num_rows($namecheck) > 0)
{
    echo "3: Name already exists"; //error code #3 - name exists cannot register
    echo();
}

//add user to the table
$salt = "\$5\$rounds=5000\$" . "steamedhams" . $username . "\$";
$hash = crypt($password, $salt);
$insertuserquery = "INSERT INTO players (username, hash, salt) VALUES ('" . $username . "', '" . $hash . "', '" . $salt . "');";
mysqli_query($con, $insertuserquery) or die("4: Insert player query failed"); //error code #4 - insert query failed

echo ("0");



?>

1 Ответ

0 голосов
/ 23 февраля 2019
  1. Перейти к этому файлу: .\libraries\sql.lib.php

  2. Найдите ошибку в строке 615. Вы обнаружите, что count() не закрывается правильно,вызывая boolean вместо array/object.

  3. Заменить всю строку 615 следующим: || ((count($analyzed_sql_results['select_expr']) == 1).

Это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...