由于撇号,mysql查询不会更新

$url = "example.com";
$data = json_decode($raw);
    $pname=$data->name;
$sql="UPDATE `client` SET pname='$pname' WHERE url='$url'";
    $query=mysql_query($sql,$link)or die(mysql_error());

When the json data is decoded, the value in variable $pname goes in client table. If there is an apostrophe sign (') in name then it throws an error. What changes can I make in the variable to send the name to database table?

example: Jerry get updated with no issues D'Cunha does not get updated as it has the apostrophe sign. The query becomes

"UPDATE `client` SET pname='D'Cunha' WHERE url='example.com'"

I found some articles but that does not say about how to find the apostrophe sign and change the variable value

use mysql_escape_string()

$sql="UPDATE `client` SET pname='".mysql_escape_string($pname)."' WHERE url='$url'";

and learn mysqli or PDO as mysql is deprciated and soon going to be drop

Try this:

UPDATE client SET pname = 'D\'Cunha' WHERE url = 'example.com'

Use prepared statements. Mysqli or PDO. Here's an example with mysqli:

$url = "example.com";
$data = json_decode($raw);
$pname=$data->name;

$mysqli = new mysqli($host, $user, $password, $db);

$stmt = $mysqli->prepare("UPDATE client SET pname = ? WHERE url = ?");
$stmt->bind_param("ss", $pname, $url);
$stmt->execute();

Why shouldn't I use mysql_* functions in PHP?