我有以下更新:
$conn->query_cust("update cms_users set last_login_date = now() where id = " . $_SESSION['USER_INFO']->id);
我确定问题不在query_cust
函数中,因为我在其他几种形式中使用相同的函数并且它们运行良好。无论如何,这是定义(调试信息有两个var_dumps):
function query_cust($s='',$rows=false,$organize=true) {
var_dump($s);
if (!$q=mysql_query($s,$this->con)) return false;
if ($rows!==false) $rows = intval($rows);
$rez=array(); $count=0;
$type = $organize ? MYSQL_NUM : MYSQL_ASSOC;
var_dump($q);
while (($rows===false || $count<$rows) && $line=mysql_fetch_array($q,$type)) {
if ($organize) {
foreach ($line as $field_id => $value) {
$table = mysql_field_table($q, $field_id);
if ($table==='') $table=0;
$field = mysql_field_name($q,$field_id);
$rez[$count][$table][$field]=$value;
}
} else {
$rez[$count] = $line;
}
++$count;
}
if (!mysql_free_result($q)) return false;
return $rez;
}
执行时,我收到一条警告信息:
string(57) "update cms_users set last_login_date = now() where id = 1" bool(true)
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/content/XX/XXXXXXX/html/core/mysql.php on line 26
令我担心的是,它返回bool(true)但是(如果我错了,请纠正我)一个不可忽视的警告!当我手动将更新查询复制到例如PHPmyAdmin时,它可以工作(用户具有表更新/插入权限)。
对于任何有相同问题的人来说,只需要几个信息:本地代码运行没有任何问题(即使启用了'error_reporting = E_ALL'),但是当在测试环境(Godaddy的托管)上执行时,警告显示出来。
PS:我不是很喜欢PHP(我来自JAVA世界)所以请在发布你的答案和我的愚蠢的子问题时怜悯:)谢谢。答案 0 :(得分:2)
您正在运行更新查询,而不是选择查询。因此,它返回true,因为更新成功。但是没有什么可以用mysql_fetch_array()获取。
如果您想选择需要提供选择查询的内容:)
答案 1 :(得分:2)
如果查询未返回结果集,则每the documentation,mysql_query
会返回true
。变化:
if (!$q=mysql_query($s,$this->con)) return false;
为:
if (!is_resource($q=mysql_query($s,$this->con))) return $q;