2014-01-23 68 views
0

好吧我有一個插入語句很好地工作一個刪除語句,正在工作。 然而,UPDATE並沒有在一天之內出現,並且看不到問題,只有我認爲它可能是MySQL中的日期時間本地字段,但它對插入起作用。更新MySQL和日期時間本地字段

形式

$Band_id = (int)$_GET['id'];  
    $result = mysql_query("SELECT * FROM bands where Band_id ='$Band_id'"); 
    $row = mysql_fetch_array($result); 
    ?> 
    <form method="post" action="ammenddetails.php"> 
    <input type="hidden" name="id" value="<? echo "$row[Band_id]"?>"> 

    <tr><td>Band Name</td></br> 
    <td><input type="text" name="Name" size="20" value="<? echo "$row[Name]"?>"></td></tr></br> 

    <tr><tr><td>Show Name</td></br> 
    <td><input type="text" name="show" size="20" value="<? echo "$row[show]"?>"></td></tr></br> 

    <tr><td>Venue</td></br> 
    <td><input type="text" name="Venue" size="20" value="<? echo "$row[Venue]"?>"></td></tr></br> 

    <tr><td>Category</td></br> 
    <td><input type="text" name="Category" size="20" value="<? echo "$row[Category]"?>"></td></tr></br> 

    <tr><td>Date and Time</td></br> 
    <td><input type="datetime-local" name="time" size="20" value="<? echo "$row[time]"?>"></td></tr></br> 

    <tr><td>Price</td></br> 
    <td><input type="number" name="price" size="20" value="<? echo "$row[price]"?>"></td></tr></br> 

    <tr><td>Stock</td></br> 
    <td><input type="number" name="Stock" size="20" value="<? echo "$row[Stock]"?>"></td></tr></br> 

    <tr><td>Infomation</td></br> 
    <?php echo "<td><textarea name= 'infomation' cols=\"50\" rows=\"8\" >" .$row['infomation']. "</textarea></td>";?></tr></br> 

    <tr><input type="submit"name="submit value" value="Update"></td> 
    </tr> 
    </form> 

ammenddetails.php

<?php 
require 'core/init.php'; 
$Name = mysql_real_escape_string($_POST["Name"]); 
$show = mysql_real_escape_string($_POST["show"]); 
$Venue = mysql_real_escape_string($_POST["Venue"]); 
$Category = mysql_real_escape_string($_POST["Category"]); 
$price = mysql_real_escape_string($_POST["price"]); 
$Stock = mysql_real_escape_string($_POST["Stock"]); 
$time = mysql_real_escape_string($_POST["time"]); 
$infomation = mysql_real_escape_string($_POST["infomation"]); 
$Band_id = (int)$_POST['id']; 

    $result = mysql_query("UPDATE `bands` 
       SET `Name`=`$Name`, 
        `show`=`$show`, 
        `Venue`=`$Venue`, 
        `Category`=`$Category`, 
        `price`=`$price`, 
        `Stock`=`$Stock`, 
        `time`=`$time`, 
        `infomation`=`$infomation` 
       WHERE 
       `Band_id`=`$Band_id`"); 

echo "UPDATE `bands` 
       SET `Name`=`$Name`, 
        `show`=`$show`, 
        `Venue`=`$Venue`, 
        `Category`=`$Category`, 
        `price`=`$price`, 
        `Stock`=`$Stock`, 
        `time`=`$time`, 
        `infomation`=`$infomation` 
       WHERE 
       `Band_id`=`$Band_id`" 
       // header("location:admin.php"); 
?> 

在查詢中的回波顯示爲:

UPDATE `bands` SET `Name`=`Coldplay`, `show`=`Time of you life`, `Venue`=`London Wembley `, `Category`=`Rock`, `price`=`2`, `Stock`=`20`, `time`=`2014-01-23T01:59`, `infomation`=`info here test` WHERE `Band_id`=`3` 

已經嘗試了建議查詢現在輸出:

UPDATE `bands` SET SET `Name`='Killers', `show`='Big Time High', `Venue`='London Apolo', `Category`='Rock', `price`='45', `Stock`='75', `time`='', `infomation`='BLOB values are trea' WHERE `Band_id`='1' 

所以查詢越來越正確的數據只更新不及時的BD

+0

使用反引號來轉義表名和列名。使用引號限制字符串。 –

+0

感謝您提供的信息,我會盡力實施。 – Beep

+0

'mysql_query'是一個過時的界面,不應該在新的應用程序中使用,並且在將來的PHP版本中將被刪除。像[PDO這樣的現代化替代品並不難學](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/)。如果你是PHP的新手,像[PHP The Right Way](http://www.phptherightway.com/)這樣的指南可以提供幫助。雖然你在這裏小心妥善地逃避了事情,但你離開災難只有一步之遙。佔位符值提供了一個額外的安全層。 – tadman

回答

1

這是你的問題。

SET `Name`=`$Name`, 

您使用`以定義字段,但對於變量,你需要使用「

例如

SET `Name`='$Name', 

....

一個更好的方法是這樣的:

SET `Name`='{$Name}', 

....

嘗試,讓我知道! :)

+0

大括號不是「更好」的。他們只是使用字符串插值對危險的SQL組合技術進行化石化。 – tadman

+0

@tadman謝謝你的信息 – Beep

+0

@Vick我會嘗試第二個選項,並讓你知道它是否有效。 – Beep