为什么我的哈希值总是全 0?

发布于 2024-12-15 02:13:28 字数 765 浏览 1 评论 0原文

这是我的函数:

function process_image($path) {
    global $mysqli;
    list($width,$height) = getimagesize($path);
    $hash = md5_file($path,true);
    $pic = $mysqli->prepare('INSERT INTO pictures () VALUES ()');
    $pic->execute();
    $pic_id = $pic->insert_id;
    $size = $mysqli->prepare("INSERT INTO picture_sizes (filename, type, picture_id, hash, width, height) VALUES (?,'FULL',?,?,?,?)");
    $size->bind_param('sibii',$path,$pic_id,$hash,$width,$height);
    if(!$size->execute()) {
        echo $size->error.'<br/>';
    }
}

“哈希”字段在我的数据库中始终显示为 0。我已将其设置为 BINARY(16)。我猜我使用 $size->bind_param 不正确,但我不知道如何正确执行。 $hash 是二进制的,所以我应该使用 b ,不是吗?

Here's my function:

function process_image($path) {
    global $mysqli;
    list($width,$height) = getimagesize($path);
    $hash = md5_file($path,true);
    $pic = $mysqli->prepare('INSERT INTO pictures () VALUES ()');
    $pic->execute();
    $pic_id = $pic->insert_id;
    $size = $mysqli->prepare("INSERT INTO picture_sizes (filename, type, picture_id, hash, width, height) VALUES (?,'FULL',?,?,?,?)");
    $size->bind_param('sibii',$path,$pic_id,$hash,$width,$height);
    if(!$size->execute()) {
        echo $size->error.'<br/>';
    }
}

The 'hash' field always shows up as 0s in my database. I've got it set to BINARY(16). I'm guessing I'm using $size->bind_param incorrectly, but I can't figure out how to do it properly. $hash is binary, so I should be using b with it, no?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无风消散 2024-12-22 02:13:28

如果出现错误,md5_file 返回false,存储到数据库时会转换为0。使用 === 运算符检查函数是否返回 false。

因为哈希是字符串,所以可以将参数设为 s 类型(字符串) 。

In case of an error, md5_file returns false, which is converted to 0 when stored in the database. Check if the function returns false using the === operator.

Because the hash is a string, you can make the parameter of the type s (string).

雪花飘飘的天空 2024-12-22 02:13:28

您可能需要查看绑定参数,看看是否必须放入占位符来解释“FULL”。插入语句设置为将 type 放在 picture_id 之前,但在您的 bind_param 中没有对 type 的引用。因此,MySQL 可能正在尝试使用 picture_id 填充 hash

You may have to look at the bind param and see if you have to put in a place holder to account for 'FULL'. The insert statement is set to put type before picture_id, but in your bind_param you have no reference to type. So it may be that MySQL is trying to populate hash with picture_id.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文