首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mysql零差错除法

mysql零差错除法
EN

Stack Overflow用户
提问于 2011-08-08 13:52:44
回答 3查看 645关注 0票数 1

我正在尝试使用PHP来更新列数据,但是我收到了一个除以零的错误。

代码语言:javascript
复制
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,但都导致了被零除的错误。帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-08 13:57:59

你的问题就在这里:

代码语言:javascript
复制
concat('%',\'' . $result . '\','%')

除法在字符串之外结束,所以PHP将其解释为一个除数,并且在数值上下文中,模数两侧的字符串将是零,结果是您试图除以零,并得到“modulus operation by 0 % 0”错误。

尝试转义内部的单引号:

代码语言:javascript
复制
concat(\'%\',\'' . $result . '\',\'%\')

或者,在PHP中创建一个在字符串中包含百分号的$like_result,然后执行以下操作:

代码语言:javascript
复制
mysql_query('UPDATE personas SET toolbar_id=\'' . $result . '\' WHERE download_ff LIKE \'' . $like_result . '\';

你也在使用mysql_real_escape_string,对吧?

票数 3
EN

Stack Overflow用户

发布于 2011-08-08 13:58:57

在PHP中使用单引号,在SQL中使用双引号,这样就不需要使用反斜杠来转义引号;使用一些空格也有助于使查询更易于阅读:

代码语言:javascript
复制
mysql_query( 
 'UPDATE personas SET 
   toolbar_id="' . $result . '" 
  WHERE 
   download_ff LIKE "%' . $result . '%" ' );
票数 1
EN

Stack Overflow用户

发布于 2011-08-08 14:01:01

未调试除法为零错误。但你的问题似乎是不正确的字符串格式和连接,PHP可能会将%视为空字符串(即0)的模运算;

代码语言:javascript
复制
<?php

$a = 10;
$b = a%'';

?>   /* would give : Warning: Division by zero on line 4 */

尝试查询的第二个版本,它会起作用:http://codepad.org/6erRjYa7

代码语言:javascript
复制
<?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;
?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6978215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档