Autor Zpráva
Xanomes
Profil
Ahoj,
mám php skript:
<?php
require('../sql.php');
session_start();
?>
<!DOCTYPE html>
<meta name="robots" content="noindex,nofollow">
<meta charset<?php echo "=".$internal['charset']; ?>>
<meta name="viewport" content="width=device-width, initial-scale=1">
<?php
$query = "INSERT INTO articles VALUES ('Lorem ipsum', 'Lorem ipsum dolor sit amet...', '1970-01-01', 'lorem, ipsum, lipsum');";
$escape = mysqli_real_escape_string($connect, $query);
mysqli_query($connect, $escape);
mysqli_close($connect);
?>

sql.php:
<?php
require('config.php');
$connect = mysqli_connect($sql['host'],$sql['user'],$sql['pass'],$sql['db']);
if(mysqli_connect_errno() != 0){
    die("<b>Fatal error:</b> Cannot connect to the database: ".mysqli_connect_errno());
}
?>
V config.php mám definované údaje k databázi, jsou určitě funkční, protože s jejich pomocí v jiném php skriptu vypisuji obsah tabulky articles.
A z nějakého neznámého důvodu ten můj php skript nezapisuje, přitom když v phpMyAdmin ten dotaz spustím, tak data bez problémů zapíše. Netušíte, kde je problém?

Díky
Dan Charousek
Profil
Xanomes:
Protože na řádku 11 escapuješ celý dotaz, což je samozřejmě špatně. Uvozovky se ti změní na \', takže dotaz skončí chybou.
Escapuj každou hodnotu zvlášť. Navíc jestli máš i sloupec pro ID, tak ti chybí. Buďto výčtem sloupců uveď, co vkládáš nebo na pozici ID (obvykle první) dej null, aby se použila hodnota autoincrementu.
TomášK
Profil
Nech si vypsat chybovou hlášku, viz Některé časteji řešené dotazy pro MySQL - FAQ » Jak si vypsat chybu
Xanomes
Profil
Dan Charousek, TomášK:
Díky za pomoc, skript jsem upravil takto a již zapisuje:
<?php
require('../sql.php');
session_start();
?>
<!DOCTYPE html>
<meta name="robots" content="noindex,nofollow">
<meta charset<?php echo "=".$internal['charset']; ?>>
<meta name="viewport" content="width=device-width, initial-scale=1">
<?php
$name = mysqli_real_escape_string($connect, "Lorem ipsum");
$text = mysqli_real_escape_string($connect, "Lorem ipsum dolor sit amet...");
$date = mysqli_real_escape_string($connect, "1970-01-01");
$tags = mysqli_real_escape_string($connect, "lorem, ipsum, lipsum");
$query = "INSERT INTO articles VALUES ('".$name."', '".$text."', '".$date."', '".$tags."');";
mysqli_query($connect, $query);
mysqli_close($connect);
?>

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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