2014-01-08 86 views
0

我试图插入在PHP语句这样如何包括PHP代码

while($row = mysql_fetch_array($result)) 
    { 
    echo "<form id='send' action='up.php' method='POST'> 
    <tr> 
    <td>" . $row['s_no'] ."</td> 
    <td> <label for='student_name'><textarea name='student_name' >".$row['student_name']."</textarea></label></td> 
    <td> <textarea name='roll_no'>".$row['roll_no'].  "</textarea></td> 
    <td> <textarea name='company'>".$row['company'].  "</textarea></td> 
    <td> <textarea name='contact_no' >".$row['contact_no']. "</textarea></td> 
    <td> <textarea name='email'>" .$row['email'].  "</textarea></td> 
    </tr> 
    <input type='text' name='batch_name' disabled='disabled' size='7' value=" .$_POST['batch_name']. "> 
    <p align='center'><button id='submit' type='submit'>Update</button></p> 
    </form>"; 
    } 

I'have从数据库中获取的DATAS表格形式,把默认进入texareas,因此它的驾驶室de编辑。所以,我计划用UDPDATE查询,以这样的交替:

<html> 
<title>Alumini Update</title> 
<head> 

<?php 
$con = mysql_connect("localhost","root","momsgift"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("alumini", $con); 

mysql_query("UPDATE $_POST[batch_name] SET contact_no = $_POST[contact_no] WHERE roll_no = '2321'"); 

mysql_close($con); 
?> 

但在发送一个查询中textarea的犯规将数据加载到数据库(但它重定向到up.php页) 什么情况是原因吗?

+0

**危险**:您正在使用[an **过时的**数据库API](http://stackoverflow.com/q/12859942/19068)并应使用[现代替换](http ://php.net/manual/en/mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻击](http://bobby-tables.com/)**,现代的API会使[防御]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己从。 – Quentin

回答

0

您正在生成无效的HTML。

您不能将表格包装在表格行周围,也不能将表格包装在整个表格中。

您的浏览器通过移动表单元素来恢复错误。这是意外结果的最可能原因。

在您生成的HTML上使用a validator

0

您的SQL查询可能不正确

如果数据类型,如果roll_no是整数,那么写

  mysql_query("UPDATE $_POST 
      [batch_name] SET contact_no = 
      $_POST[contact_no] WHERE roll_no 
      = '2321'") or die(mysql_error()); 

赤为SQL错误。

0

在您的MySQL更新查询中,您只更新contact_no没有其他字段。

而且你已经离开了您的查询打开SQL注入

$batch_number = mysql_real_escape_string($_POST['batch_name']); 
$contact_no = mysql_real_escape_string($_POST['contact_no']); 
$student_name = mysql_real_escape_string($_POST['student_name']); 
$roll_no = mysql_real_escape_string($_POST['roll_no']); 
$company = mysql_real_escape_string($_POST['company']); 
$email = mysql_real_escape_string($_POST['email']); 

mysql_query("UPDATE ('" . $batch_no. "') 
SET contact_no = ('" . $contact_no . "'), 
student_name = ('" . $student_name. "'), 
company = ('" . $company . "'), 
email = ('" . $email . "'), 
WHERE roll_no = ('" . $roll_no . "')"); 

这(mysql_real_escape_string)将不会解决所有问题,并使用PDO是一种较好的方法,但它是一个很好的跳板。

0

首先写这个,看看结果,如果它显示的textarea的文本显示的文本是正确的发送。问题是在你的SQL代码。 echo $ _POST ['contact_no']; 然后你可以回显查询并复制并运行它在phpmyadmin和查看错误的SQL。

0
//EXAMPLE 1 

     if (isset($_POST['update'])) 
     {   
     $result = pg_query($db_con, "UPDATE mydbtable SET mydbrecord = '$_POST[my_var1]' WHERE mydbrecord_id = '$_POST[myfilterbyid_var]'"); 

     if (!$result) 
     { 
      echo "Update failed!!"; 
     } 
     else 
      { 
      echo "Update successfull!"; 
      } 
     } 


    //EXAMPLE 2 

<form name="display" action="" method="post"> 
<select name="mydropdown" action="test.php" method="post"> 
    <?php 
    while($row = pg_fetch_assoc) 
    { 
    echo "<option id=\"{$row['result_var']}\">{$row['result_var']}</option>"; 
    } 
?> 
</select> 
+0

示例1 - 基本上,我在这里用my_var1(用户输入变量)在我的数据库表(mydbtable)上更新数据库记录(mydbrecord),也是通过过滤另一个变量,在本例中是一个id字段(myfilterbyid_var)例如,通过先前的选择。 示例2 - 一个标准的php从一个选择结果变量的html变量 希望这会有所帮助。 祝你好运, – FilhoDumMocho

+0

PS-例2你有一段时间的选择来生成选项,而有内容 – FilhoDumMocho