2011-08-08 13 views
1

PHPを使用して列データを更新しようとしていますが、ゼロ除算エラーが発生しています。ゼロエラーによるmysql除算

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()); 

Iveは$結果を連結する方法をいくつか試しましたが、すべてゼロ除算となります。助けて!

答えて

3

あなたの問題はここです:

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

PHPがmodulus operationとして解釈され、モジュラスの両側の文字列が数値コンテキストではゼロになりますので%は、文字列の外に出て終了結果は0 % 0にしようとしており、あなたは "ゼロ除算"エラーを受け取ります。

内側の単一引用符をエスケープしてみてください。あなたはmysql_real_escape_stringを使用している

mysql_query('UPDATE personas SET toolbar_id=\'' . $result . '\' WHERE download_ff LIKE \'' . $like_result . '\'; 

:これを行う、その後

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

あるいは、文字列内のパーセント記号が含まれていることを、あなたのPHPで$like_resultを作成し、右すぎる?

1

PHPでは一重引用符を使用し、SQLでは二重引用符を使用すると、引用符をエスケープするためにバックスラッシュを使用する必要はありません。いくつかの空白を使用すると、クエリを読みやすくすることができます。

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

ゼロ除算についてはデバッグしませんでした。 しかし、あなたの問題は不適切な文字列の書式設定と連結であるようです。 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; 
?> 
関連する問題