Проблемы преобразования mysql в mysqli с использованием функций с несколькими запросами - PullRequest
0 голосов
/ 02 мая 2018

У меня есть 2 php-файла. Дополнительные некоторые PHP-код, включенный в Joomla непосредственно в статье с Sourcerer.

Кажется, что-то здесь не хватает.

Первая ошибка, которую я получаю:

Warning: mysqli_query() expects parameter 1 to be mysqli, null given 

предупреждение показывает строку в db-query.php, где написано

return $result = mysqli_query($db, $q);"

Вторая ошибка:

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given.

Это показывает сценарию в статье Joomla, где я хочу проверить num_rows. Это довольно ясно, потому что нет результата. Поэтому в основном мне нужно исправить ошибку # 1 ...

Так что сценарий почему-то не знал, что это $ db. Я застрял ... Кто-нибудь может помочь или дать небольшую подсказку?

1: db-connect.php

$sqlhost = "xxx";
$sqluser = "xxx";
$sqlpassword = "xxx";
$sqldb = "xxx";

$db = mysqli_connect ($sqlhost, $sqluser, $sqlpasswort, $sqldb);
mysqli_set_charset($db,"utf8");

2 db-query.php

<?php include ("db-connect.php");
function squadresults ($squad_nr) {
global $db;
$q = "
    SELECT spieler_id, spiel1, spiel2, spiel3, spiel4, spiel5, spiel6, netto, hdc, gesamt_hdc, qualifiziert
    FROM onyc_ergebnisse
    WHERE squad_nr='".$squad_nr."'
    ORDER BY gesamt_hdc DESC, hdc ASC";
return $result = mysqli_query($db, $q);
}

3 включенный код в статье Joomla

<?php
    require_once JPATH_SITE.'/_skripte_/db-queries.php';
    $q = squadresults ('despo_2018'); // the function squadresults in db-queries.php is called
    var_dump ($q); // just to check if there are any results --> NULL
    if (mysqli_num_rows($q)==0) {echo "<p class='info'><br/>This squad hasn't been played yet.</p>";}
    else {?>
<table class="table-striped">
<tr class="header">
    <td class="header">Place</td>
    <td class="header">Player</td>
    <td class="header">Result</td>
    <td class="header">HDC</td>
    <td class="header">Total</td>
    <td class="header">qual</td>
</tr>

<?php $platz = 1; while ($row = mysqli_fetch_assoc($q)) {
$spieler_id = $row['spieler_id'];
$spieler = mysqli_fetch_row (spielernamen_ergebnisse($spieler_id));
var_dump ($spieler);
echo "<tr>
<td class='center'>".$platz.".</td>
<td class='spieler'>".$spieler[0]." ".$spieler[1]."</td>
<td class='center'>".$row['spiel1']."</td>
<td class='center'>".$row['hdc']."</td>
<td class='center'>".$row['gesamt_hdc']."</td>
<td class='center'>".$row['qualifiziert']."</td>
</tr>";
$platz++;
}?>
</table>
<?php  } ?>

1 Ответ

0 голосов
/ 02 мая 2018

Я предлагаю это:

дб-connect.php

$mysqli = new mysqli("localhost", "user", "pass", "db_test");

/* check the con */
if (mysqli_connect_errno()) {
    printf("Error: %s\n", mysqli_connect_error());
    exit();
}
/* set utf-8 */
if (!$mysqli->set_charset("utf8")) {
    printf("Error on set utf8: %s\n", $mysqli->error);
    exit();
} 

по db-запросам

if ($result = mysqli_query($link, "SELECT Name FROM City LIMIT 10")) {
    /* do my code */
    printf("Numbers %d rows.\n", mysqli_num_rows($result));
}
/* If we have to retrieve large amount of data we use MYSQLI_USE_RESULT */
if ($result = $mysqli->query("SELECT * FROM City", MYSQLI_USE_RESULT)) {

    /* Note, that we can't execute any functions which interact with the
       server until result set was closed. All calls will return an
       'out of sync' error */
    if (!$mysqli->query("SET @a:='this will not work'")) {
        printf("Error: %s\n", $mysqli->error);
    }
    $result->close();
}

Предлагаю прочитать doc Официальный Php Mysqli

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