Autor | Zpráva | ||
---|---|---|---|
barneby Profil |
#1 · Zasláno: 10. 5. 2013, 20:22:37 · Upravil/a: Moderátor (editace znemožněna) 11. 5. 2013, 10:51:04
Dobrý den,
mám tu takovej csript na registraci uživatelů v mým redakčním systému ale kdiž na csript odešlu data tak my to napíše : Query was empty Zde je ten csript: <?php ob_start(); // cachujeme vystup if(isset($_POST['sent'])){ // pokud byl odeslan formular pokracuj timto $nick=($_POST['nick']); $jmeno=($_POST['jmeno']); $prijmeni=($_POST['prijmeni']); $heslo1=$_POST['heslo1']; $heslo2=$_POST['heslo2']; $mail=($_POST['mail']); $skype=($_POST['skype']); $web=($_POST['web']); if($nick=="" or $jmeno=="" or $prijmeni=="" or $heslo1=="" or $mail==""){ // pokud nebylo vyplněno něco z toho, co je povinné, dáme vědět a skript ukončíme $backlink="../index.php?page=registrace&Alert=1"; }else{ // povinné udaje vyplněny vsechny require "../db_login.php"; // pripojime se k databazi $Overeni = $db->query(mysql("SELECT COUNT(*) FROM `uzivatele` WHERE `nick`='$nick' OR `mail`='$mail'"),0) or die (mysql_error()); if($Overeni!=0){ // pokud v db je jiz takove jmeno nebo heslo... $backlink="../index.php?page=registrace&Alert=2"; }elseif($heslo1 != $heslo2){ // pokud se hesla nerovnají $backlink="../index.php?page=registrace&Alert=3"; }else{ // hesla se shoduji, vlozime tedy data do databaze $heslo=md5($heslo1); // zahashujeme heslo if($web=="http://" or $web==""){ //pokud nezadal web tak dame promennou web Neuveden $web="Neuveden"; } $VlozData = $db->query("INSERT INTO uzivatele (nick,jmeno,prijmeni,heslo,mail,skype,web,prava) VALUES ('$nick', '$jmeno', '$prijmeni', '$heslo', '$mail', '$skype', '$web', '0')") or die (mysql_error()); // Vlozim do tabulky hodnoty - prvni je ID - nevyplnim, tvori se samo. // Jako posledni hodnota je "0", to jsou ty prava uzivatele. $backlink="../index.php?Alert=4"; // presmerovani s hlaskou ze je vse OK } } }else{ $backlink="../index.php?page=registrace&Alert=5"; } // pokud pouzijete HEADER LOCATION tak by pred nim nemelo byt zadne platne ECHO //echo "<a href='index.php'>index</a>"; // samozrejme zde muze byt presmerovani na jinou stranku pomoci header ("Location: $backlink"); ob_end_flush(); ?> <h1>Registrace</h1> <form action="./php/registrace.php" method="post"> <input type="hidden" name="sent" value=""/> <input type="text" name="nick" maxlength="32"/> <strong>Už. jméno</strong> <br/> <input type="text" name="jmeno" maxlength="32"/> <strong>jméno</strong> <br/> <input type="text" name="prijmeni" maxlength="32"/> <strong>Přijmení</strong> <br/> <input type="password" name="heslo1" maxlength="32"/> <strong>Heslo</strong> <br/> <input type="password" name="heslo2" maxlength="32"/> <strong>Heslo znovu </strong><br/> <input type="text" name="mail" value="" maxlength="64"/> <strong>Email</strong><br/> <input type="text" name="skype" maxlength="32"/> <strong>skype</strong> <br/> <input type="text" name="web" value="http://" maxlength="128"/> Web<br/> <input type="submit" name="send" value="Registruj"/> </form> Děkuju. |
||
Davex Profil |
Mám pocit, že jsou na 16. řádku nějak pomotané metoda
$db->query() a funkce mysql() .
Třeba tady Duplicate entry '0' for key 1 je stejný skript a 14. řádek vypadá trochu jinak. |
||
barneby Profil |
#3 · Zasláno: 10. 5. 2013, 20:37:43 · Upravil/a: barneby
Davex:
„Mám pocit, že jsou na 16. řádku nějak pomotané metoda $db->query() a funkce mysql().“ Ano to máš pravdu nevím jak ti udělat jinak. Davex: „Třeba tady Duplicate entry '0' for key 1 je stejný skript a 14. řádek vypadá trochu jinak.“ Ano to taky ale zde je používána zastaralá metodat query |
||
Davex Profil |
#4 · Zasláno: 10. 5. 2013, 22:51:20
Tak to asi musíš najít náhradu i za zastaralou funkci
mysql_result a správně jí poskládat s metodou $db->query() na 16. řádku. Skript předěláváš z rozšíření MySQL na objektové MySQLi?
|
||
barneby Profil |
#5 · Zasláno: 11. 5. 2013, 10:36:01
Ano csript je rozšířenej. Zde ti poskytnu soubory db_login.php a soubor sql_connector.class.php
Zde je db_login.php <?php define('DB_SERVER', 'localhost'); define('DB_USER', 'root'); define('DB_PASS', 'heslo'); define('DB_NAME', 'rs'); define('DB_PREFIX', ''); //------------------------------------------------ require "php/sql_connector.class.php"; $db = new DB(DB_SERVER, DB_USER, DB_PASS, DB_NAME); $db->query("SET NAMES utf8"); if(!$db->spojeni) { exit("Nelze se spojit s databazovym serverem."); } if(!$db->spojeno) { exit("<p>MySQL server byl pripojen (spravne prihlasovaci udaje), ale <b>nebyla nalezena databaze</b> se zadanym jmenem. Patrne chybny udaj.</p>"); } <?php class DB { var $spojeni; var $spojeno; var $pocitadlo = 0; var $soucet_casu = 0; var $debug = false; var $sql_log = array(); var $posledni = ''; /* Pripojeni + zajisteni uzavreni spojeni s db po skonceni behu scriptu */ function DB($h,$u,$p,$db) { $this->host = $h; $this->db = $db; $this->user = $u; $this->pass = $p; $this->spojeni = @mysql_connect($this->host, $this->user, $this->pass); $this->spojeno = @mysql_select_db($this->db); if($_SERVER['REMOTE_ADDR'] == $_SERVER['SERVER_ADDR']) { $this->debug = true; } else { $this->debug = false; } register_shutdown_function(array(&$this, 'close')); } /* Nahrada mysql_query(). Pri debug modu pocita dotazy a dobu, za jakou je db zpracuje. */ function query($sql) { $this->pocitadlo++; $t1 = $this->getTime(); if(!($result = @mysql_query($sql)) && $this->debug) { echo "<p class=\"dberror\">".mysql_error()."<br />".$sql."</p>"; } $time = $this->getTime() - $t1; $this->sql_log[] = $time . ' - ' . $sql . '<br />'; $this->soucet_casu += $time; $this->posledni = 'SQL: '.$sql.' ('.$time.')'; return $result; } /* Slouzi pro ziskani presneho casu pro pocitani, jak dlouho trva dotaz na db. */ function getTime() { list($usec, $sec) = explode(' ',microtime()); $querytime = ((float)$usec + (float)$sec); return $querytime; } /* Vypise sql log (prikazy a dobu jejich zpracovani). */ function getSqlLog($typ = 1) { if($typ == 1) { $h = 'Dotazu: '.$this->pocitadlo .' ('.$this->soucet_casu.')<br />'; foreach($this->sql_log AS $sql) { $h .= $sql; } return $h; } else if($typ == 2) { $p = array($this->pocitadlo, $this->soucet_casu); return $p; } } /* Ukonceni spojeni. */ function close() { @mysql_close($this->spojeni); } } function save2db($pole,$tabulka,$where = null) // if $where -> update { global $db; $q = ''; $ins_ind = ''; $ins_val = ''; foreach ($pole as $index => $hodnota) { $hodnota = "'$hodnota'"; if(!empty($where)) // buduje se UPDATE query (index=hodn,index=hodn,...) { $q .= "$index=$hodnota, "; } else // buduje se INSERT query { $ins_ind .= "$index, "; $ins_val .= "$hodnota, "; } } if(!empty($where)) { $q = substr($q,0,-2); // orizneme posledni carku a mezeru $sql = 'UPDATE '.$tabulka.' SET '.$q.' '.$where; } else { $ins_ind = substr($ins_ind,0,-2); $ins_val = substr($ins_val,0,-2); $sql = "INSERT INTO $tabulka ($ins_ind) VALUES($ins_val)"; } if($db->query($sql)) { return true; } else { return false; } } |
||
Davex Profil |
barneby:
„Budu vděčný ža každí nápad jak nahradit funkci mysql_result za metodu $db->query()“ Funkce mysql_result dělá něco jiného než $db->query() a nejdou navzájem nahrazovat. Stále používáš zastaralé DB rozšíření MySQL, ke kterému přidáváš jen nějakou obálku, takže jsi tam mohl mysql_result klidně nechat.
|
||
Časová prodleva: 11 let
|
0