我的图片没有下载到我的数据库表

时间:2017-12-16 14:59:57

标签: php mysql sql-insert

我在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);
}
?>

1 个答案:

答案 0 :(得分:2)

你正在将不同的mysql apis与mysqli_和PDO混合使用,你不能这样做,因为他们没有混合。

连接变量也(理论上)不匹配。

您需要使用PDO连接来进行PDO查询。

手册中的示例连接:

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

并在查询中使用相同的变量。您正在使用$db,因此也与连接匹配。

注意:您在VALUES中也使用了错误的列名name。由于我不懂西班牙语(似乎是),您需要使用与之对应的西班牙语。您可能打算使用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注入。