Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
albertpatera
Tvůrce
Avatar
albertpatera:26.6.2013 1:39

ahoj,
potřeboval bych poradit...mám takovej jeden problém a to je ten, že když zapíšu (zaregistruju) uživatele na webu do databáze přes formulář, tak mi databáze vypíše jenom prázdný řádky, ale když to udělám ručně (vložím uživatele do databáze v phpMyAdminu, tak už to ty výsledky zobrazí a nezobrazí to jenom prázdné řádky. Tady mám skript pro registraci:

<?php
//connect to the database

$connect = mysql_connect("localhost","blackstone11","patera123456");
mysql_select_db ("bertuvweb") or die ("Nastala chyba v připojení k databázi");

$query = mysql_query ("INSERT INTO users VALUE ('','$username','$password')");
$numrows = mysql_num_rows($query);

$row = mysql_fetch_array($row);



//form data

$username = $_POST['username'];
$password = $_POST['password'];
$submit = $_POST['submit'];

if ($username) {

}
else
    echo "Zadejte vaše uživatelské jméno";

    if ($password) {

    }
    else
        echo "Zadejte prosím vaše heslo";




mysql_close;

?>

a tady pak samostatnej formulář:

<form action='register.php?id=5' method='POST'>
 <input type='text' name='username'><br>
 <input type='password' name='password'><br>
 <input type='submit' name='submit'><br>

</form>

díky moc za rady, jak to spravit

 
Odpovědět
26.6.2013 1:39
Avatar
Kit
Tvůrce
Avatar
Odpovídá na albertpatera
Kit:26.6.2013 5:06

Tohle bude asi nesmysl:

$row = mysql_fetch_array($row);
Nahoru Odpovědět
26.6.2013 5:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
teeg
Člen
Avatar
Odpovídá na albertpatera
teeg:26.6.2013 8:47

Pokud máš ten kód přesně takhle, tak bych řekl, že napřed ukládáš do databáze neinicializované proměnné a teprve pak do nich dáváš ty hodnoty z formuláře. To uložení by mělo následovat až po přiřazení hodnot do těch proměnných. Jinak bych si dal ještě pozor na SQL injekci a nepoužíval už zastaralý ovladač mysql - zkus se podívat tady na webu na PDO ;-)

 
Nahoru Odpovědět
26.6.2013 8:47
Avatar
Kit
Tvůrce
Avatar
Odpovídá na teeg
Kit:26.6.2013 10:05

Bral jsem to spíš jako útržky kódu než jako ucelený skript. Pokud by to vypadalo skutečně tak, nemůže to fungovat - přesně tak jak píšeš.

Nahoru Odpovědět
26.6.2013 10:05
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
motorovapila
Člen
Avatar
motorovapila:26.6.2013 11:30
<?php
/*pripojeni do databaze*/
$db_spojeni = mysqli_connect ('*****', '******', '*****', '*****', 3306);
/*pripojeni do databaze*/


if($_POST['odeslani_formulare']) {
  /*začátek zapis dat do databáze*/
  $sql_prikaz = mysqli_query($db_spojeni, "SET NAMES 'utf8'");
  $sql_prikaz = "INSERT INTO nazev_tabulky (sloupec_1,sloupec_2,sloupec_3,sloupec_4,sloupec_5) "."VALUES('"
             .mysqli_real_escape_string($db_spojeni, $_POST['values_1'])."','"
             .mysqli_real_escape_string($db_spojeni, $_POST['values_1'])."','"
             .mysqli_real_escape_string($db_spojeni, $_POST['values_1'])."','"
             .mysqli_real_escape_string($db_spojeni, $_POST['values_1'])."','"
             .mysqli_real_escape_string($db_spojeni, $_POST['values_1'])."')";
  $objekt_vysledku = mysqli_query($db_spojeni, $sql_prikaz);
  /*konec zapis dat do databáze*/
}

if($objekt_vysledku) {
  echo 'registrace proběhla uspěšně';
}
else {
  echo 'registrace selhala';
}
?>
 
Nahoru Odpovědět
26.6.2013 11:30
Avatar
albertpatera
Tvůrce
Avatar
albertpatera:26.6.2013 12:56

ok zkusim teda prohodit ty proměný..

 
Nahoru Odpovědět
26.6.2013 12:56
Avatar
Kit
Tvůrce
Avatar
Odpovídá na albertpatera
Kit:26.6.2013 13:14

MySQLi umí vázání proměnných v parametrizovaných dotazech.

Nahoru Odpovědět
26.6.2013 13:14
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
albertpatera
Tvůrce
Avatar
Odpovídá na Kit
albertpatera:11.7.2013 20:42

mohl bych se teda zeptat, jak to tedy bude?...díky

Editováno 11.7.2013 20:42
 
Nahoru Odpovědět
11.7.2013 20:42
Avatar
Kit
Tvůrce
Avatar
Odpovídá na albertpatera
Kit:11.7.2013 23:09

Tady máš ukázku kódu z oficiální dokumentace:
http://www.php.net/…atements.php

MySQLi jsem přeskočil, dnes už používám jen PDO.

Našel jsem dokonce způsob, jak dělat prepared statements v zastaralém ovladači MySQL. Bez escapování to nefunguje, ale je hodně případů, kdy je vhodné to použít.

Nahoru Odpovědět
11.7.2013 23:09
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.