Chciałbym umieścić zdjęcia w bazie danych MySQL, w polu typu BLOB.
Pomijając rozważania na temat wydajności i sensowności takiego rozwiązania, a także niekompletności skryptu pod kątem bezpieczeństwa etc, chciałbym chociażby na próbę odpalić takie rozwiązanie.
Niestety za nic w świecie mi się to nie udaje.
Byłbym Wam bardzo wdzięczny za jakąś sugestię na czym może polegać błąd, albo chociaż jak go znaleźć.
plik add_form.php:
Kod
<?php
echo '<form action="add_base.php" method="post" enctype="multipart/form-data">';
echo '<input type="hidden" name="MAX_FILE_SIZE" value="65000" />';
echo '<input type="file" name="picture" /><br />';
echo '<input type="submit" name="wyslij" value="Dodaj zdjecie!" />';
echo "</form>";
?>
echo '<form action="add_base.php" method="post" enctype="multipart/form-data">';
echo '<input type="hidden" name="MAX_FILE_SIZE" value="65000" />';
echo '<input type="file" name="picture" /><br />';
echo '<input type="submit" name="wyslij" value="Dodaj zdjecie!" />';
echo "</form>";
?>
plik add_base.php:
Kod
<?php
//połączenie z bazą danych
//====fragment w którym spodziewam się błędu====
$tmpName = $_FILES['picture']['tmp_name'];
$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);
//==========================================
mysql_query("
INSERT INTO `test`.`pictures` (
`user_id` ,
`picture`
)
VALUES (
'3', '$content'
);")
or die("Błąd w zapytaniu!");
?>
//połączenie z bazą danych
//====fragment w którym spodziewam się błędu====
$tmpName = $_FILES['picture']['tmp_name'];
$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);
//==========================================
mysql_query("
INSERT INTO `test`.`pictures` (
`user_id` ,
`picture`
)
VALUES (
'3', '$content'
);")
or die("Błąd w zapytaniu!");
?>
Niestety zapytanie sql nie wykonuje się.
Próbowałem też wersję z
Kod
$content = file_get_contents($_FILES['picture']['tmp_name']);
niestety z identycznym efektem. Gdy podstawiam zamiast $content jakiś ciąg znaków, zapytanie wykonuje się.