我正在尝试使用PHP来更新列数据,但是我收到了一个除以零的错误。
mysql_query('UPDATE personas SET toolbar_id=\'' . $result . '\' WHERE download_ff LIKE concat('%',\'' . $result . '\','%')');
echo mysql_error($link);
printf("Records inserted: %d\n", mysql_affected_rows());我已经尝试了几种方法来连接$result,但都导致了被零除的错误。帮助!
发布于 2011-08-08 13:57:59
你的问题就在这里:
concat('%',\'' . $result . '\','%')除法在字符串之外结束,所以PHP将其解释为一个除数,并且在数值上下文中,模数两侧的字符串将是零,结果是您试图除以零,并得到“modulus operation by 0 % 0”错误。
尝试转义内部的单引号:
concat(\'%\',\'' . $result . '\',\'%\')或者,在PHP中创建一个在字符串中包含百分号的$like_result,然后执行以下操作:
mysql_query('UPDATE personas SET toolbar_id=\'' . $result . '\' WHERE download_ff LIKE \'' . $like_result . '\';你也在使用mysql_real_escape_string,对吧?
发布于 2011-08-08 13:58:57
在PHP中使用单引号,在SQL中使用双引号,这样就不需要使用反斜杠来转义引号;使用一些空格也有助于使查询更易于阅读:
mysql_query(
'UPDATE personas SET
toolbar_id="' . $result . '"
WHERE
download_ff LIKE "%' . $result . '%" ' );发布于 2011-08-08 14:01:01
未调试除法为零错误。但你的问题似乎是不正确的字符串格式和连接,PHP可能会将%视为空字符串(即0)的模运算;
<?php
$a = 10;
$b = a%'';
?> /* would give : Warning: Division by zero on line 4 */尝试查询的第二个版本,它会起作用:http://codepad.org/6erRjYa7
<?php
$result = "foo";
$query = $query = 'UPDATE personas SET toolbar_id=\'' . $result . '\' WHERE download_ff LIKE concat('%',\'' . $result . '\','%')';
echo $query;
$queryNew = "UPDATE personas SET toolbar_id='".$result."' WHERE download_ff LIKE concat('%','".$result."','%')";
echo PHP_EOL ;
echo $queryNew;
?>https://stackoverflow.com/questions/6978215
复制相似问题