2011-08-15 101 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