Мое изображение не загружается на мою таблицу базы данных

0

У меня есть код в Php для загрузки изображений, дело в том, что когда я вставляю картинку, она будет правильно сохранена в папке prueba/, но она не будет загружена на мою db_table.

if(isset($_POST['btn-add']))
    {
        $name=$_POST['user_name'];

        $images=$_FILES['profile']['name'];
        $tmp_dir=$_FILES['profile']['tmp_name'];
        $imageSize=$_FILES['profile']['size'];

        $upload_dir='prueba/';
        $imgExt=strtolower(pathinfo($images,PATHINFO_EXTENSION));
        $valid_extensions=array('jpeg', 'jpg', 'png', 'gif', 'pdf');
        $picProfile=rand(1000, 1000000).".".$imgExt;
        move_uploaded_file($tmp_dir, $upload_dir.$picProfile);
        $stmt=$db_conn->prepare('INSERT INTO restaurantes_resutlado (name, fotos) VALUES (:uname, :upic)');
        $stmt->bindParam(':uname', $name);
        $stmt->bindParam(':upic', $picProfile);
        if($stmt->execute())
        {
            ?>
            <script>
                alert("new record successul");
                window.location.href=('index.php');
            </script>
        <?php
        }else 

        {
            ?>
            <script>
                alert("Error");
                window.location.href=('index.php');
            </script>
        <?php
        }

    }

дБ:

Name Type Collation Attributes Null Default Comments Extra
1 id int(11) No None
2 nombre varchar(150) latin1_swedish_ci No None
3 zona varchar(150) latin1_swedish_ci No None
4 precio float No None
5 valoracion float No None
6 comentarios varchar(100) latin1_swedish_ci No None
7 ranking int(1) No None
8 tipo_cocina varchar(100) latin1_swedish_ci No None
9 horario time No None
10 fotos varchar(200) latin1_swedish_ci No None

HTML

<div class="container">
        <div class="add-form">
            <h1 class="text-center">Please Insert new Item image</h1>
            <form method="post" enctype="multipart/form-data">
                <label>User Name</label>
                <input type="text" name="user_name" class="form-control" required="">
                <label>Picture Profile</label>
                <input type="file" name="profile" class="form-control" required="" accept="*/image">
                <button type="submit" name="btn-add">Add New </button>

            </form>
        </div>
        <hr style="border-top: 2px red solid;">
    </div>  
<!-- end form insert -->
<!-- view form -->
<div class="container">
    <div class="view-form">
        <div class="row">
        <?php 
            $stmt=$db_conn->prepare('SELECT * FROM tbl_user ORDER BY id DESC');
                $stmt->execute();
                if($stmt->rowCount()>0)
                {
                    while($row=$stmt->fetch(PDO::FETCH_ASSOC))
                    {
                        extract($row);
                        ?>
            <div class="col-sm-3">
            <p><?php echo $username ?></p>
            <img src="uploads/<?php echo $row['picProfile']?>"><br><br>

            <a class="btn btn-info" href="edit_form.php?edit_id=<?php echo $row['id']?>" title="click for edit" onlick="return confirm('Sure to edit this record')"><span class="glyphicon glyphicone-edit"></span>Edit</a>
            <a class="btn btn-danger" href="?delete_id=<?php echo $row['id']?>" title="click for delete" onclick="return confirm('Sure to delete this record?')">Delete</a>

            </div>

            <?php 

                }
            }
            ?>
        </div>

    </div>
</div>

Подключение:

<?php
// Database configuration
$dbHost     = "localhost";
$dbUsername = "root";
$dbPassword = "root";
$dbName     = "restaurantes";

// Create database connection
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);

// Check connection
if ($db->connect_error) {
    die("Connection failed: " . $db->connect_error);
}
?>
Теги:
sql-insert

1 ответ

2
Лучший ответ

Вы смешиваете разные mysql apis с mysqli_ и PDO, вы не можете этого сделать, поскольку они не смешиваются.

Переменная соединения также (теоретически) не совпадает.

Вам необходимо использовать соединение PDO, чтобы выполнить запрос PDO.

Пример подключения из руководства:

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

и использовать для него ту же переменную в запросе. Вы используете $db так, чтобы это соответствовало соединению.

Примечание: Вы также используете неправильное имя столбца, name в ЦЕННОСТЯХ. Так как я не знаю испанский (кажется,), вам нужно будет использовать тот, который ему соответствует. Возможно, вы nombre использовать nombre.

Используйте (правильную) обработку ошибок:

Пример обработки ошибок PDO из руководства:

try {
    $dbh = new PDO($dsn, $user, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

Вы также используете методы GET, поэтому убедитесь, что они отключены.

Также используйте подготовленное выражение. Это поможет защитить от потенциальной инъекции SQL.

  • 0
    @ Whhoiscoo, пожалуйста. Повернись, проверь ошибки и, если что-то не получится, посмотри, что это за ошибки (ошибки), исправь их, и ты, скорее всего, сможешь это исправить. Отладка и изучение того, как правильно интерпретировать / понимать сообщения об ошибках, очень важны во время разработки, но самое главное, обучение и знания, которые вы получили бы.
  • 0
    спасибо, сейчас работает!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню