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