PHP + mysqli blbne v xubuntu focal

PHP + mysqli blbne v xubuntu focal
« kdy: 19. 10. 2020, 15:38:46 »
Poslední dobou zkouším dělat chat,server - PHP(webserver),klient - node.js/electron.Všechno to mám propojené přes ajax a přito jsem narazil na problém s php/mysqli.
Problém č.1:
PHP naprosto ignoruje POST z ajaxu či špatně fungující mysqli.
Problém č.2:
PHP neumí správně spočítat počet řádku v mysql db přes mysqli.
Když v konzoli mysql zadám příkaz k přečtení všeho z tabulky tak to krásně funguje,avšak v PHP ne. Funkce fetch_assoc vrací prázdný obsah.

Kód: [Vybrat]
<?php 
if(isset($_POST['nick'],$_POST['msg']))
{
   
$conn = new mysqli("localhost","db","","chat");
  
$user $_POST['nick'];
  
$msg $_POST['msg'];
  
$final_send $user ":" $msg;
  
$final_send $conn->escape_string($final_send);
  
$conn->query("INSERT into messages(msg)VALUES(".$final_send.");");
  
$conn->close(); 
}
else 
{
   
$conn = new mysqli("localhost","db","","chat");
   
$for_echo "";
   
$result $conn->query('SELECT * FROM messages;');
   if(
$result->num_rows 0)
   {
     echo 
$result->num_rows;
     while(
$row $result->fetch_assoc())
    {
     
$for_echo $for_echo "<br>" $row["msg"];
    }
   }
   
$conn->close();
   echo 
$for_echo;
}

?>


tecka

Re:PHP + mysqli blbne v xubuntu focal
« Odpověď #1 kdy: 19. 10. 2020, 16:43:23 »

Re:PHP + mysqli blbne v xubuntu focal
« Odpověď #2 kdy: 19. 10. 2020, 17:56:45 »
K PHP je volně dostupná dokumentace s popisy a příklady použití.
https://www.php.net/manual/en/mysqli.real-escape-string.php
https://www.php.net/manual/en/mysqli-result.num-rows.php
to ano,aji jsem to podle toho dělal kromě toho stringu ale v druhém problému rozhodně není problém se stringem

tecka

Re:PHP + mysqli blbne v xubuntu focal
« Odpověď #3 kdy: 19. 10. 2020, 18:05:58 »
num_rows nemusí obsahovat správnou hodnotu dokud se nenačtou všechna data a řetězce se spojují operátorem . (tečka).

Re:PHP + mysqli blbne v xubuntu focal
« Odpověď #4 kdy: 19. 10. 2020, 18:19:15 »
Použijte prepared statements, mysqli to umí, PDO taky. Počet řádků - záleží, na co to potřebujete, ale asi bych použil
Kód: [Vybrat]
SELECT count(*) AS count FROM table; a vytáhnul si hodnotu count z výsledku.


Kit

  • *****
  • 585
    • Zobrazit profil
    • E-mail
Re:PHP + mysqli blbne v xubuntu focal
« Odpověď #5 kdy: 19. 10. 2020, 19:28:54 »
K čemu je dobrá metoda escape_string()? Je to něco podobného jako metoda quote() v PDO?

Když budeš používat prepared statements, tak na tyhle nesmysly zapomeneš.

Re:PHP + mysqli blbne v xubuntu focal
« Odpověď #6 kdy: 20. 10. 2020, 06:10:09 »
num_rows nemusí obsahovat správnou hodnotu dokud se nenačtou všechna data a řetězce se spojují operátorem . (tečka).
jenže ta hodnota je větší

Re:PHP + mysqli blbne v xubuntu focal
« Odpověď #7 kdy: 20. 10. 2020, 06:12:03 »
K čemu je dobrá metoda escape_string()? Je to něco podobného jako metoda quote() v PDO?

Když budeš používat prepared statements, tak na tyhle nesmysly zapomeneš.
PDO ani prepared statements jsem nikdy nepoužívál

Kit

  • *****
  • 585
    • Zobrazit profil
    • E-mail
Re:PHP + mysqli blbne v xubuntu focal
« Odpověď #8 kdy: 20. 10. 2020, 08:41:31 »
K čemu je dobrá metoda escape_string()? Je to něco podobného jako metoda quote() v PDO?

Když budeš používat prepared statements, tak na tyhle nesmysly zapomeneš.
PDO ani prepared statements jsem nikdy nepoužívál

Prepared statements vypadají v MySQLi poněkud obskurně, ale zvyknout se na to dá. V PDO jsou vyřešeny mnohem lépe.

Aspoň vyměň ty pluska za tečky tam, kde nechceš sčítat čísla, ale spojovat stringy.

Re:PHP + mysqli blbne v xubuntu focal
« Odpověď #9 kdy: 20. 10. 2020, 10:08:54 »
K čemu je dobrá metoda escape_string()? Je to něco podobného jako metoda quote() v PDO?

Když budeš používat prepared statements, tak na tyhle nesmysly zapomeneš.
PDO ani prepared statements jsem nikdy nepoužívál

Prepared statements vypadají v MySQLi poněkud obskurně, ale zvyknout se na to dá. V PDO jsou vyřešeny mnohem lépe.

Aspoň vyměň ty pluska za tečky tam, kde nechceš sčítat čísla, ale spojovat stringy.
To jsem udělal a vyřešilo to oba 2 problémy