2011-08-15 145 views
1

我一直在尋找很長時間來解決我認爲是一個非常簡單的問題。從mysql表中插入php記錄到不同的表

我有一個動態創建的頁面,其視頻具有唯一的ID。我也有一個用戶可以提交內容的表單。我希望將視頻的ID包含在提交給tableA的視頻中。

此代碼的偉大工程,只有當$ ID = 1

$vidq = "SELECT * FROM tutorials"; 
$vidresult = mysql_query($vidq); 
$vidrow = mysql_fetch_array($vidresult); 

//form submission 
if($_POST['formname'] == "submit") { 

$name = $_POST['name']; 
$id = $vidrow['id']; 
$errorMessage = ""; 
if(empty($name)) { 
    $errorMessage .= "<li>Please enter a valid name</li>"; 
    } 

if(empty($errorMessage)) { 

    $insert = "INSERT INTO tableA (videoid, name) VALUES (".$id.", ".$name.")"; 

    mysql_query($insert); 
    exit(); 
    } 
} 

當我改變$ ID爲= 1,它的帖子,但是當$ id來= $ vidrow [ '身份證']它不」 t後。

我在做什麼錯?

+3

當心[Bobby Tables](http://xkcd.com/327/)。然後嘗試'list($ vidrow)= mysql_fetch_array(...)' –

+2

你不想保存表單中視頻的id嗎?您正在從教程表中選擇一個隨機行並使用其「id」。你應該在窗體的隱藏輸入中使用與窗體相關聯的視頻的'id',然後從'$ _POST'中讀取與名稱相同的內容。你也有一個問題,'$ name'的值既沒有被轉義也沒有被單引號括起來。 –

+0

@Linus他爲什麼要這麼做? 'mysql_fetch_array'返回一行作爲關聯數組,這就是他如何使用它。 –

回答

-2
  1. 你試過$id = $vidrow['id'];後打印出的$id內容?它可能會揭示爲什麼它不按你想要的方式工作...

  2. 你有沒有想過如果惡意(或只是好奇)的用戶用?name=%27%27%29%3b%20DROP%20TABLE%20tableA%3B調用你的腳本會發生什麼?

+0

是的。我認爲在表單提交正確之後添加代碼是最簡單的。謝謝,雖然 – sundanlotion

+0

這是一個可能的策略,但它承擔了由於任何原因(因爲人類就像他們)而被遺忘的風險。最好立即做這件事 - 它只是對'mysql_real_escape()'的調用。只要提一下。 – glglgl