Autor Zpráva
danny98
Profil
Ahoj, napsal jsem script add.php
$value = mysql_real_escape_string($_POST['country']);
$value2 = mysql_real_escape_string($_POST['station']);
$value3 = mysql_real_escape_string($_POST['stream']);
$value4 = mysql_real_escape_string($_POST['stream2']);
$value5 = mysql_real_escape_string($_POST['web']);
$value6 = mysql_real_escape_string($_POST['genre']);
$value7 = mysql_real_escape_string($_POST['desc']);

if ($_POST['license'] == 'value8'){
  $sql = mysqli_prepare($conn, 'INSERT INTO `stations`(`station`, `country`, `stream`, `stream2`, `web`, `genre`, `desc`) 
  VALUES (?, ?, ?, ?, ?, ?, ?)");
  mysqli_bind_param($sql, "sssssss", $_POST['country'], $_POST['station'], $_POST['stream'], $_POST['stream2'], $_POST['web'], $_POST['genre'], $_POST['desc']);
mysqli_execute($sql);

Po nahrání na hosting a zkoušce, se mi v db neobjevila data :/

co prosím vás dělám blbě?
mimochodec
Profil
danny98:
Dotaz na ř. 10 začíná apostrofem, končí uvozovkami.
Marschmallow
Profil
danny98:
Apostrof.
$value = mysql_real_escape_string($_POST['country']);
$value2 = mysql_real_escape_string($_POST['station']);
$value3 = mysql_real_escape_string($_POST['stream']);
$value4 = mysql_real_escape_string($_POST['stream2']);
$value5 = mysql_real_escape_string($_POST['web']);
$value6 = mysql_real_escape_string($_POST['genre']);
$value7 = mysql_real_escape_string($_POST['desc']);
 
if ($_POST['license'] == 'value8'){
  $sql = mysqli_prepare($conn, 'INSERT INTO `stations`(`station`, `country`, `stream`, `stream2`, `web`, `genre`, `desc`) 
  VALUES (?, ?, ?, ?, ?, ?, ?)');
  mysqli_bind_param($sql, "sssssss", $_POST['country'], $_POST['station'], $_POST['stream'], $_POST['stream2'], $_POST['web'], $_POST['genre'], $_POST['desc']);
mysqli_execute($sql);
lionel messi
Profil
danny98:
1. Nikde nevidím, že by si sa k db pripájal.
2. Máš syntaktickú chybu na riadkoch 10, resp. 11 ako už spomenul mimochodec. Na začiatku reťazca používaš na ohraničenie apostrof, na jeho konci zase úvodzovky, čo je neprípustné a skript vráti Parse error.
3. Funkcia mysqli_bind_param je od PHP 5.4.0 odstránená. Použi namiesto nej mysqli_stmt_bind_param a vhodné by bolo taktiež v rámci dodržiavania konvencie vymeniť mysqli_execute za jej alias mysqli_stmt_execute, podobne i mysqli_prepare za mysqli_stmt_prepare.
4. Ostáva mi záhadou, prečo používaš prepared statements a escapovanie pomocou mysql_real_escape_string, riadky 1–7 pokojne zmaž.
danny98
Profil
děkuju všem:)
lionel: připojování jsem kvůli datům odstranil

a php konfiguraci mám na hostingu 5.3
lionel messi
Profil
danny98:
a php konfiguraci mám na hostingu 5.3
Už v tejto verzii je zmienená funkcia označovaná ako zastaralá.
danny98
Profil
po upravení add.php se mi stále do mysql nepřidávají řádky...

Kód:
<?php
$server="mysql.grendelhosting.com"; 
$user="************";
$password="******";
$database="*******"; 

$conn=mysqli_connect ($server, $user, $password, $database);

  $sql = mysqli_stmt_prepare($conn, 'INSERT INTO `stations`(`station`, `country`, `stream`, `stream2`, `web`, `genre`, `desc`) 
  VALUES (?, ?, ?, ?, ?, ?, ?)');
  mysqli_stmt_bind_param($sql, "sssssss", $_POST['country'], $_POST['station'], $_POST['stream'], $_POST['stream2'], $_POST['web'], $_POST['genre'], $_POST['desc']);
mysqli_stmt_execute($sql);
  header("Location: index.php");
  echo '<script type="text/javascript">';
    echo 'alert("your station was added!")';
    echo '</script>';
?> 



je to syntaxe exportována přímo z mysql
lionel messi
Profil
danny98:
Zmaž riadky 13–16 a napíš tam namiesto nich:
if (mysqli_error($conn)) {
  echo "Chyba dotazu: ". mysqli_error($conn);
}

Kontroluješ ešte pred vložením, či boli dáta skutočne odoslané (najlepšie pomocou isset ($_POST['country'], $_POST['station'], $_POST['stream'], $_POST['stream2'], $_POST['web'], $_POST['genre'], $_POST['desc']))?
danny98
Profil
vyskočilo toto:

Warning: mysqli_stmt_prepare() expects parameter 1 to be mysqli_stmt, object given in /home/u311461713/public_html/add.php on line 10

Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, null given in /home/u311461713/public_html/add.php on line 11

Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, null given in /home/u311461713/public_html/add.php on line 12

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0