Zliczanie rekordów z bazy

0

Cześć.
Chce zliczyć ile jest rekordów w bazie danych z odpowiedzią A i wyświetlić tę ilość.
Problem, że nie wyświetla tego wyniku.

$sqlzap = "SELECT COUNT (*) FROM 'odpowiedzi' WHERE 'odpowiedz' = 'A'";
$sql = mysqli_query($conn, $sqlzap);

echo $sql;
0

Pokaż rezultat var_dump($sql);.

0

bool(false)

0

Patrzymy zatem do dokumentacji, gdzie jasno jest napisane:

Return Values

Returns FALSE on failure.

Oznacza to, że Twoje zapytanie się nie powiodło (np. przez literówkę albo błąd składniowy).

0

to jest cały kod praktycznie, widzicie tą literówkę bo ja nie mogę się doszukać? i czemu zwraca bool(false) jak odpowiedzi w bazie są jako typ danych text?

0

to jest cały kod praktycznie

Czyli fragment ;-)

praktycznie cały kod brzmi jak praktycznie jeszcze zielone światło na skrzyżowaniu

i czemu zwraca bool(false) jak odpowiedzi w bazie są jako text?

Przecież napisałem dlaczego zwraca bool(false).

widzicie tą literówkę bo ja nie mogę się doszukać?

Spróbuj tak:

$sqlzap = "SELECT COUNT (*) FROM odpowiedzi WHERE odpowiedz = 'A'";
0

Już tego próbowałem. Nie działa.

0

Ok, zatem nie ma co dalej zgadywać - niech się sam przyzna, co mu dolega: https://www.php.net/manual/en/mysqli.error.php :-)

0

Ogólnie inne zapytania do bazy działają dobrze.
teraz po zastosowaniu:

if ($conn->connect_errno) {
    printf("Connect failed: %s\n", $conn->connect_error);
    exit();
}
if (!$mysqli->query("SET a=1")) {
    printf("Error message: %s\n", $mysqli->error);
}

Notice: Undefined variable: mysqli in .....

Fatal error: Uncaught Error: Call to a member function query() on null in .........

0

Dlaczego w jednym przypadku wykorzystujesz zmienną $conn, a w drugim - $mysqli?

0

masz racje. zła kopia.

0

Error message: Unknown system variable 'a' bool(false)

0

Wrzuć kod.

0
<?php     
$nick = $_POST['nick'];
$odp = $_POST['odp'];


require_once "connect.php";

echo $nick;
echo $odp;




$sqlzap = "SELECT COUNT (*) FROM odpowiedzi WHERE odpowiedz = 'A'";
$sql = mysqli_query($conn, $sqlzap);


if ($conn->connect_errno) {
    printf("Connect failed: %s\n", $conn->connect_error);
    exit();
}
if (!$conn->query("SET a=1")) {
    printf("Error message: %s\n", $conn->error);
}



var_dump($lll);

echo $sql;





if ($nick != '' && $odp != '') {
	$conn->query("INSERT INTO odpowiedzi(id, ip, nick, odpowiedz) VALUES ('','$ip','$nick','$odp')");
 }



$zap = "SELECT * FROM `odpowiedzi`";

$rez = mysqli_query($conn, $zap);
$ile = mysqli_num_rows($rez);


	for ($i = 1; $i <= $ile; $i++) 
	{
		
		$row = mysqli_fetch_assoc($rez);
		$nick = $row['nick'];
		$odpowiedz = $row['odpowiedz'];	
		
echo<<<END
<td width="20" align="center">$nick</td>
<td width="20" align="center"> ---> </td>
<td width="20" align="center">$odpowiedz</td>
</tr><tr>
END;
			
	}

?>
0

Dlaczego tak właściwie próbujesz uruchomić zapytanie SET a=1?

0

Skopiowałem ze stronki myślałem, że Ci to coś powie.

0

Powinieneś czytać i myśleć, a nie kopiować i sklejać losowe kawałki kodu w nadziei, że zadziała (https://en.wikipedia.org/wiki/Programming_by_permutation).

Problem polega na tym, że w Twoim oryginalnym kodzie:

$sqlzap = "SELECT COUNT (*) FROM 'odpowiedzi' WHERE 'odpowiedz' = 'A'";
$sql = mysqli_query($conn, $sqlzap);

echo $sql;

... występuje błąd po stronie bazy danych, który ignorujesz.

Aby posłuchać, co ta biedna baza ma do powiedzenia, powinieneś wykorzystać $conn->error, mniej-więcej tak:

$sql = mysqli_query($conn, $sqlzap);

if ($sql === false) {
  die('Zapytanie się nie powiodło: ' . $conn->error);
}
0

Zapytanie się nie powiodło: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '*) FROM odpowiedzi WHERE odpowiedz = 'A'' at line 1

0

No, teraz już mamy konkretny błąd ;-)

Pokaż co zwraca dla tego zapytania:

SELECT COUNT(*) FROM odpowiedzi WHERE odpowiedz = 'A'
0

Object of class mysqli_result could not be converted to string

0

Spróbuj var_dump($sql); w takim razie.

0

object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(1) ["lengths"]=> NULL ["num_rows"]=> int(1) ["type"]=> int(0) }

1

No i gites, zapytanie działa - powstał za to inny problem wynikający z tego, że mysqli_query() nie zwraca bezpośrednio rezultatu (czyli w Twoim przypadku liczby), a obiekt z którego dopiero rezultat można wyciągnąć.

Jako że odczytywanie wyników zapytań zostało szeroko opisane w dokumentacji oraz innych zakamarkach internetu, dokończenie aplikacji zostawiam Tobie ;-)

Pozwolę sobie na tym etapie dumnie przytoczyć Twój cytat:

Już tego próbowałem. Nie działa.

Działa (to poprawione zapytanie zasugerowałem już w trzecim poście!); z tym że Ty ignorujesz wszystkie błędy, przez co straciliśmy razem niemal godzinę na coś, co mogłoby zostać wyłapane w minutę, gdybyś tylko prawidłowo je obsługiwał. Pamiętaj o tym na przyszłość.

0

Dobra dzięki, pobawię się i napisze co i jak.

1
$sqlzap = "SELECT COUNT(*) as suma FROM odpowiedzi WHERE odpowiedz = 'A'";
$sql = mysqli_query($conn, $sqlzap);

$row = mysqli_fetch_assoc($sql);

echo $row['suma'];

Udało się ;) , ale nie rozumiem tej filozofii php, że zamiast konkretnego wyniku na prosty kod potrzebuje zazwyczaj dodatkowej obróbki. Potrzebuje więcej wiedzy poza dokumentacją. Gdzie znajdę jakiś dobry poradnik w języku polskim jak rozwiązywać problemy żebym mógł lepiej załapać działanie/logikę php?

Dzięki. Pozdrawiam. ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1