INSERT后数据库没有记录

时间:2016-09-05 10:54:03

标签: php mysql

嗨,我有以下情况,我试图用下面的代码保存我的数据库中的图片

    <?php

    $cn = mysqli_connect('localhost', 'Admin', 'xkmpfg3t', 'test');

    foreach (glob('*.jpg') as $img) {
        $picName = mysqli_real_escape_string($cn, "$img");
        $picData = mysqli_real_escape_string($cn, file_get_contents("$img"));
        if (mysqli_ping($cn)) {
            printf("Our connection is ok!\n");
            mysqli_query($cn, "INSERT INTO `pictures` (`user_id`,`picture_id`,`picture_name`,`picture`) VALUES ('1','','$picName','$picData')");
        } else {
            printf("Error: %s\n", mysqli_error($cn));
        }
    }
?>

当我将图像大于1MB时,一切正常工作,在我发送请求后我没有得到任何错误但是当我看到表时没有图像记录。我使用xampp并修改my.ini文件,如下所示:

# The MySQL server
[mysqld]
port= 3306
socket = "C:/xampp/mysql/mysql.sock"
basedir = "C:/xampp/mysql" 
tmpdir = "C:/xampp/tmp" 
datadir = "C:/xampp/mysql/data"
pid_file = "mysql.pid"
# enable-named-pipe
key_buffer = 16M
max_allowed_packet = 16M
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log_error = "mysql_error.log"

我的代码中有什么问题吗?对不起英文。

2 个答案:

答案 0 :(得分:0)

我首先发现了这样的参数化查询:

<?php

$cn = mysqli_connect('localhost', 'Admin', 'xkmpfg3t', 'test');
foreach (glob('*.jpg') as $img) {
    $picName = mysqli_real_escape_string($cn, "$img");
    $picData = file_get_contents($img);
    $stmt = mysqli_prepare($cn, "INSERT INTO pictures (`user_id`,`picture_id`,`picture_name`,`picture`) VALUES ('1',NULL,?,?)")or die(mysqli_errno($cn));
    mysqli_stmt_bind_param($stmt, "ss", $picName, file_get_contents($img)) or die(mysqli_errno($cn));
    mysqli_stmt_execute($stmt) or die(mysqli_errno($cn));
    mysqli_stmt_close($stmt);
}

但它没有帮助。事实证明,我必须将innodb_log_file_size更改为大于5M的默认值,因为它允许我发送由于某种原因而占该值的10%的步幅。我将其更改为50M,现在可以正常工作。

答案 1 :(得分:0)

请检查php.ini文件中的参数。金额只是一个例子。

memory_limit=128M
post_max_size=128M
upload_max_filesize=50M