mysql除以零错误

时间:2011-08-08 05:52:44

标签: php mysql

我正在尝试使用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但是这一切都导致了零错误的除法。救命啊!

3 个答案:

答案 0 :(得分:3)

你的问题就在这里:

concat('%',\'' . $result . '\','%')

%在字符串之外结束,因此PHP将其解释为modulus operation,并且模数两边的字符串在数字上下文中将为零,结果是你是尝试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,对吗?

答案 1 :(得分:1)

如何使用PHP的单引号和SQL的双引号,这样你就不必乱用反斜杠来转义引号;使用一些空格也有助于使查询更好地阅读:

mysql_query( 
 'UPDATE personas SET 
   toolbar_id="' . $result . '" 
  WHERE 
   download_ff LIKE "%' . $result . '%" ' );

答案 2 :(得分:1)

没有通过零错误调试divistion。 但你的问题似乎是不正确的字符串格式和连接, 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;
?>