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
。
我不知道为什么执行没有执行或什么。
任何建议都表示赞赏。
答案 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