У меня есть этот php-код для загрузки изображения в базу данных, у меня проблема с ним, и я не знаю, что это, имя таблицы базы данных изображения и поля: id, name VARCHAR(), photo LONGBLOB.

<?php
ini_set('display_errors', '1');
$servername = "";
$username = "";
$password = "";
//$host = "";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
echo "Connected successfully";
?>
<html>
<body>
    <form method="post" enctype="multipart/form-data">
        <input type="file" name="image"/>
        </br>
        </br>
        </br>
        <input type="submit" name="go" value="Upload"/>
    </form>
    <?php
        if(isset($_POST['go'])){
            if(getimagesize($_FILES['image']['tmp_name']) == FALSE){
                echo "Select a photo please";
            }else {
                $image = addslashes($_FILES['image']['tmp_name']);
                $name = addslashes($_FILES['image']['name']);
                $image = file_get_contents($image);
                $image = base64_encode($image);
                save_image($image , $name);
            }
        }
        function save_image($image , $name){
            $servername = "localhost";
            $username = "cl60-shooters";
            $password = "dbsjcNs-b";
            $conn = new mysqli($servername, $username, $password);
            $qry = "insert into images (photo , name) VALUES ('$image','$name')";
            $result = mysqli_query($conn,$qry);

            if($result){
                echo "Successfull upload";
            }else{
                echo "try Again";
                print_r($result);
            }



        }

        ?>
</body>
</html>

Результат показан на прилагаемом скриншоте: Результат

0
user4252986 27 Ноя 2016 в 16:08

2 ответа

Лучший ответ

Ваша функция не упоминает базу данных - вам необходимо указать это как один из параметров, например:

function save_image($image , $name){
    $servername = "localhost";
    $username = "cl60-shooters";
    $password = "dbsjcNs-b";
    $database='xxxxxxxx';/* enter correct db name */


    $conn = new mysqli( $servername, $username, $password, $database );
    $qry = "insert into images (`photo`, `name`) VALUES ('$image','$name')";
    $result = mysqli_query($conn,$qry);

    if($result){
        echo "Successfull upload";
    }else{
        echo "try Again";
        print_r($result);
    }
}

К вашему сведению, ваш код уязвим для внедрения sql - лучше использовать подготовленные операторы!

0
Professor Abronsius 27 Ноя 2016 в 13:18

Вы не используете имя базы данных в конструкторе mysqli. Должно получиться так:

$servername = "localhost";
$username = "cl60-shooters";
$password = "dbsjcNs-b";
$database = "database_name_here";
$conn = new mysqli($servername, $username, $password, $database);

Надеюсь, теперь это сработает.

0
Wolverine 27 Ноя 2016 в 13:27