Php 使用哈希()时发生sql错误?

Php 使用哈希()时发生sql错误?,php,hash,md5,Php,Hash,Md5,我正在使用IPBoard论坛,我决定不使用MD5,而是使用SHA512。 我使用的是记事本++,所以我刚刚用hash('SHA512'),重命名了所有md5() 在安装之后,我得到了这个SQL错误 这是否意味着SQL查询不支持hash()? 我怎样才能修好它 mySQL query error: SELECT hash('SHA512', ( CONCAT( lang_id, '-', word_app, '-', word_pack, '-', word_key ) ) as word_loo

我正在使用IPBoard论坛,我决定不使用MD5,而是使用SHA512。 我使用的是记事本++,所以我刚刚用
hash('SHA512'),
重命名了所有
md5(

在安装之后,我得到了这个SQL错误

这是否意味着SQL查询不支持hash()? 我怎样才能修好它

mySQL query error: SELECT hash('SHA512', ( CONCAT( lang_id, '-', word_app, '-', word_pack, '-', word_key ) ) as word_lookup, word_id, hash('SHA512', word_default) as word_default, word_default_version FROM forum_core_sys_lang_words WHERE word_app='core' AND lang_id IN(1)

SQL error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('SHA512', ( CONCAT( lang_id, '-', word_app, '-', word_pack, '-', word_key ) ) a' at line 1
SQL error code: 1064
Date: Thursday 18th July 2013 03:34:35 PM
更改此项:

    $this->DB->build( array( 'select'   => "hash('SHA512', ( CONCAT( lang_id, '-', word_app, '-', word_pack, '-', word_key ) ) as word_lookup, word_id, hash('SHA512', word_default) as word_default, word_default_version",
                             'from'     => 'core_sys_lang_words',
                             'where'    => "word_app='{$app_override}' AND lang_id IN(" . implode( ",", $lang_ids ) . ")" ) );
    $this->DB->execute();
为此:

SELECT hash('SHA512', ( CONCAT( lang_id, '-', word_app, '-', word_pack, '-', word_key ) ) as word_lookup

MySQL中的散列函数是SHA1和SHA2。您可以参考MySQL文档了解正确的语法()

在您的情况下,代码应该是

SELECT hash('SHA512', CONCAT( lang_id, '-', word_app, '-', word_pack, '-', word_key ) ) as word_lookup

SHA2仅在MySQL版本5.5.5及以上版本中可用。或者,您可以使用旧的SHA1函数,但在这里您无法控制位长度。

您有3个
开始方括号,但只有2个
第一次调用hash()时关闭方括号…请阅读,然后。您还需要更改$this->DB->build(数组)('select'=>“hash('SHA512',(CONCAT(lang_id',-',word_-app',-',word_-pack',-',word_-key))作为单词查找到$this->DB->build(数组('select'=>“hash('SHA512',CONCAT(lang_-id',-',word_-app',-',word-pack',-',word-key))作为单词查找
$this->DB->build( array(
    'select'   => "SHA2(CONCAT( lang_id, '-', word_app, '-', word_pack, '-', word_key ), 512) AS word_lookup, word_id, SHA2(word_default, 512) AS word_default, word_default_version",
    'from'     => 'core_sys_lang_words',
    'where'    => "word_app='{$app_override}' AND lang_id IN(" . implode( ",", $lang_ids ) . ")"
));