Table 1 - users
id username items
1 Paul 1(0020);2(0001);
Table 2 - items
id name
1 name_here
以我user`s物品i放2(0001)至極emans MYSQL字段修改值:2 =項ID,0001是它 這裏的量是一個函數,顯示我的項目列表在具有多個值(複雜)
function getitems() {
$username = $_SESSION['user'];
$connect = mysql_connect("localhost","root","x") or die("Conexiune nereusita!");
mysql_select_db("skameron") or die("Baza de date nu exista!");
$query = mysql_query("SELECT * FROM users WHERE username='" . $username . "'") or die(mysql_error());
if(mysql_num_rows($query) == 0) {
echo "<tr><td colspan=\"3\">Nu ai iteme in inventar!</td></tr>";
} else {
while($itm = mysql_fetch_assoc($query)) {
$str = $itm['items'];
$items = preg_split("/;/", $str);
foreach ($items as $item){
$temp_item = preg_split("/,/", $item);
if($temp_item){
foreach ($temp_item as $temp_i){
If($temp_i=="")
{
}
else{
$pieces = substr($temp_i, -5, 4);
$piecesold = $pieces;
$pieces = $pieces/1;
//$arrnr = array(0,1,2,3,4,5,6,7,8,9,"(",")");
//$temp_i = str_replace($arrnr,"",$temp_i);
$query2 = mysql_query("SELECT * FROM items WHERE id='" . $temp_i . "'") or die(mysql_error());
if(mysql_num_rows($query2) == 0) {
echo "<tr><td colspan=\"3\">Nu ai iteme in inventar!</td></tr>";
} else {
while($itm2 = mysql_fetch_assoc($query2)) {
$temp_i = $itm2['name'];
$temp_id = $itm2['id'];
echo $temp_i . " <a href='items.php?del=". $temp_id."(".$piecesold.")'>Delete all</a>(". $pieces . ")/<a href='items.php?del=". $temp_id."(".$piecesold.")&nr=1'>Delete 1</a><br>";
}}}}} else {
echo $item;
}}}}}
我做的頁面刪除一個項目,但我不能老是找到一種方法來刪除剛纔的項目數量...例如可以改變:2(0100); 1( 0001);對此:2(0099); 1(0001);
這裏是我的表現如何刪除這樣的價值...
$delitem = $_GET['del'];
$queryreg = mysql_query("UPDATE users SET items = REPLACE(items, '$delitem;', '');");
我可以用這個頁面上刪除像2(0099)的值;和其他人保持... 但我不能老是隻更改項目至極量爲0099/1 = 99
你有一個非常有說服力的理由,你不會將這些信息分成兩個不同的列嗎?爲什麼你要在單個列中存儲一個列表? – hometoast 2012-07-25 14:06:13
任何解決方案,你從那裏** **不涉及重新設計你的桌子將會有根本的缺陷。你真的真的需要規範化設計。 – 2012-07-25 14:24:26
你不能在MySQL中找到這樣做的方法,因爲MySQL不提供這種功能。如果你像這樣存儲你的數據,你將不得不自己處理更新;正如您發現的那樣,當您執行UPDATE時,您需要分配整個列值。您需要的邏輯對於使用內置的MySQL函數來實現將會過於複雜;如果你設法實現它,那麼結果表達式會非常糟糕,破譯它的功能幾乎是不可能的。你的數據設計很糟糕;你需要管理它的代碼也會很糟糕。 – spencer7593 2012-07-25 15:50:16