在localhost工作的php pdo更新查询不在服务器centOS中

时间:2017-09-20 02:31:01

标签: php mysql pdo

if ($status == 'login') {
            $query = "UPDATE login SET is_online = '1', "
                    . "ip_address = :ip_add,login_time = now(),logout_time = '' WHERE username = :username";
            $update = $dbh->prepare($query);
            $update->bindValue(":ip_add", $ip_address, PDO::PARAM_STR);
            $update->bindValue(":username", $username, PDO::PARAM_STR);
        } else {
            $query = "UPDATE login SET is_online = '0',logout_time = now() WHERE username = :username";
            $update = $dbh->prepare($query);
            $update->bindValue(":username", $username, PDO::PARAM_STR);
        }

        echo "====".$update->execute()."++++";
        if ($update->execute()) {
            return TRUE;
        } else {
            return FALSE;
        }

以上查询在localhost中有效,当我在服务器中部署它时,它没有运行。

我怎么知道它没有运行? echo echo "====".$update->execute()."++++";没有显示任何内容(甚至是= or +)。我希望它在0 or 1之间打印=,+,无论查询是fail or passed。 我不知道为什么执行没有执行或什么。 任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:1)

@YvesLeBorg

的帮助下

我在.translate()中将查询包装在那里,我看到有一个错误说列不能具有from __future__ import unicode_literals import codecs def _bytes_repr(c): """py2: bytes, py3: int""" if not isinstance(c, int): c = ord(c) return '\\x{:x}'.format(c) def _text_repr(c): d = ord(c) if d >= 0x10000: return '\\U{:08x}'.format(d) else: return '\\u{:04x}'.format(d) def backslashescape_backport(ex): s, start, end = ex.object, ex.start, ex.end c_repr = _bytes_repr if isinstance(ex, UnicodeDecodeError) else _text_repr return ''.join(c_repr(c) for c in s[start:end]), end codecs.register_error('backslashescape_backport', backslashescape_backport) print(b'\xc2\xa1\xa1after'.decode('utf-8', 'backslashescape_backport')) print(u'\u2603'.encode('latin1', 'backslashescape_backport')) 的值。哪个指向结构try/catch PDOException的列''所以我只是将值更改为logout_time,现在它可以正常工作。

同一位用户也建议访问:How to Debug