2011-10-23 62 views
0

所以我有一個PHP日曆,我做了,它允許你添加一個事件..除了問題是,當我現在添加一個事件,它顯示在phpmyadmin作爲一個新的記錄但它沒有任何信息。請幫助:P。數據沒有顯示在MySQL

  <html> 

<head> 

    <title> 
    Calendar - event added 
    </title> 
    <body> 
    <?php 
    $link = mysql_connect('tealdevcom.ipagemysql.com', '*******', '********'); 
    if (!$link) { 
     die('Could not connect: ' . mysql_error()); 
    } 

    mysql_select_db(cal1); 


    $sql="INSERT INTO cal1_table (event, cal_date) 
    VALUES 
    ('$_POST[title]','$_POST[date]')"; 

    if (!mysql_query($sql,$link)) 
     { 
     die('Error: ' . mysql_error()); 
     } 
    echo "event added"; 

    mysql_close($link) 
    ?> 
    <br> 
    Go back to the <a href="http://www.development.tealdev.com">Calendar</a> 
    </body> 
    </html> 
+4

請研究並開始使用準備好的SQL語句,或者至少在服務器端轉義表單輸入數據。上面的示例非常容易出現SQL注入攻擊。 –

+0

您是否回顯$ sql變量以查看它的內容是什麼? – NotMe

+0

@CoryLarson - 你確定嗎?看起來它不會跑向我。但是,再一次,這很難閱讀。 (哦,你是對的btw。':P') –

回答

0

添加一些的 「printf」(PHP回聲」語句代碼來驗證$ _ POST [標題]和$ _ POST [日期]不爲空

不會傷害呼應你的$ sql語句了。

基本上,你需要調試

1)你輸入

2)你的SQL查詢

0

一般來說:如果查詢成功,但數據沒有顯示在你的GUI爲空白你隨時可以測試這種方式:

1)運行查詢(從控制檯上的表1)選擇可樂,COLB - 檢查數據是否存在。 2)如果數據存在,請將您的查詢修改爲(選擇長度(colA),長度(colB))。現在您將知道數據中是否有空白字符或二進制字符,因爲長度不會爲空。

病房後,你應該

3)將數據庫插入到一個新的方法。

4)將UNIT測試添加到您的代碼中以運行該方法,並確保在向查詢插入參數添加空數據或空數據時引發異常。

0

我強烈建議使用某種方式分別傳遞查詢參數,而不是直接將它們嵌入到查詢字符串中。正如其他地方提到的那樣,這會讓您對SQL injection attacks敞開大門。一個例子是使用PDO objects

例如

$dbh = new PDO('mysql:host=tealdevcom.ipagemysql.com;dbname=$cal1', $user, $pass); 
$stmt = $dbh->prepare("INSERT INTO cal1_table (event, cal_date) VALUES (:title, :date)"); 
$stmt->bindParam("title", $_POST['title']); 
$stmt->bindParam("date", $_POST['date']); 
$stmt->execute(); 

我找到了phpinfo();函數可用於調試$ _GET/$ _ POST是否包含我認爲他們所做的事情。也許你的數據沒有正確發佈。