防止Mysql的被覆盖的数据
问题描述:
我想在列更多的数据(合并)添加到现有的字符串purchased
防止Mysql的被覆盖的数据
我用这个PHP代码:
$id=$_GET["id"];
$username=$_SESSION['username'];
$sql="UPDATE `users` SET `purchased` = `purchased`.' $id' WHERE `username`='$username'";
mysql_query($sql);
如果当前用户的purchased
列包含价值0
那么在这个查询后(id = 1)它应该变成
0 1
但它覆盖了现有的数据并且变成了1
我怎样才能加入这个(space)1
对现有在我的MySQL列0
没有覆盖任何东西,由刚刚加盟到现有的字符串
答
解决通过让现有的价值和PHP将字符串连接
$id = $_GET["id"];
$username = $_SESSION['username'];
$sql = "SELECT `purchased` FROM `users` WHERE `username` = '".$_SESSION['username']."'";
$data = mysql_query($sql);
while($row = mysql_fetch_row($data)) {
$ep = $row[0];
}
$newData = ''.$ep.' '.$id.'';
$sql="UPDATE `users` SET `purchased` = '$newData' WHERE `username`='$username'";
mysql_query($sql);
答
这就是答案:
$id = $_GET["id"];
$username = $_SESSION['username'];
try {
$dbh = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password);
$sth = $dbh->prepare('UPDATE `users` SET `purchased` = CONCAT(`purchased`,?) WHERE `username`=?');
$sth->bindParam(1, $id, PDO::PARAM_INT);
$sth->bindParam(2, $username, PDO::PARAM_STR);
$sth->execute();
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
+0
请在Core PHP编程中始终使用[PEAR](http://pear.php.net/manual/en/standards.php)编码标准。 – 2014-10-11 07:34:20
请在Core PHP编程中始终使用[PEAR](http://pear.php.net/manual/en/standards.php)编码标准。 – 2014-10-11 07:35:14