1

このための構文を正しく理解できません。$nproj_hoursフォームを介して送信された値を取得しhours_idて、時間テーブルでそれに関連付けられたキー値を検索し、その数値を新しい行の要約テーブルに配置しようとしています(これを行うのは部門とプロジェクトもあるので、それらをすべて1つにまとめる方法があれば、プロジェクトと部門のテーブルもあります)。

最終コード:

if (isset($_POST['btnnew']))  

    {
    echo "<pre>Value of \$_POST:</br>";print_r($_POST);echo"</pre>";

        $nclarity_id    = $_POST['nclarity_id'];
        $nproj_hours    = $_POST['nproj_hours'];
        $ndept_name     = $_POST['ndept_name'];
        $proj_id        = $_POST['nclarity_id'];
        $hours_id       = $_POST['nproj_hours'];
        $dept_id        = $_POST['ndept_name'];

        $sql        = "INSERT INTO `summary` VALUES (null,'$proj_id','$hours_id','$dept_id',null)" 
                            or die ("couldn't update".mysql_error());
        $query = mysql_query($sql);

//echo "<pre>Value of \$sql:</br>";print_r($sql);echo"</pre>";
        if ($query)
{
echo "success!";
}
else
            {
        die('error inserting new record'.mysql_error());
    } // end of the nested if statement
}

?>

<table width="500" border="0" cellspacing="1" cellpadding="0">
   <tr>
   <td align="center">&nbsp;</td>
   <td align="center"><strong>Clarity ID</strong></td>
   <td align="center"><strong>Hours</strong></td>
   <td align="center"><strong>Department</strong></td>
   </tr>
<form name="form1" method="post" action="stupid.php">
<tr>
<td>&nbsp;</td>
<select name="nclarity_id">

<?php
$sql = "SELECT proj_id, clarity_id FROM projects " . "ORDER by clarity_id";

$rs = mysql_query($sql);

while($row = mysql_fetch_array($rs))
{
  echo "<option value=\"".$row['proj_id']."\">".$row['clarity_id']."</option>\n  ";
}
?>

</select>
<select name="nproj_hours">
<?php
$sql = "SELECT hours_id, proj_hours FROM hours";

$rs = mysql_query($sql);

while($row = mysql_fetch_array($rs))
{
  echo "<option value=\"".$row['hours_id']."\">".$row['proj_hours']."</option>\n  ";
}
?>
</select>

<select name="ndept_name">

<?php
$sql = "SELECT dept_id, dept_name FROM departments";

$rs = mysql_query($sql);

while($row = mysql_fetch_array($rs))
{
  echo "<option value=\"".$row['dept_id']."\">".$row['dept_name']."</option>\n  ";
}
?>
</select>
   <input type="submit" name="btnnew" value="Enter New Record">
</tr>
</table>

<table width="500" border="0" cellspacing="1" cellpadding="0">
<tr>
<td>
<table width="500" border="1" cellspacing="0" cellpadding="3">
</tr>


<?php
while($rows=mysql_fetch_array($res))
{

?>

<?php
}

?>

</table>
</td>
</tr>
</table>


<?php
mysql_close();
?>
4

1 に答える 1

1

クエリを変更する必要があります。具体的には、キーワードを削除しVALUES て列名を追加します。正確な構文と詳細については、仕様を参照してください。入力しましたcolname1, colname2, colname3, colname4-サマリーテーブルの実際の列名に置き換える必要があります

INSERT INTO summary (colname1, colname2, colname3, colname4) 
   SELECT NULL, NULL, proj_hours, NULL
   FROM hours 
   WHERE proj_id ='$nproj_hours

いつものように、SQLインジェクションの可能性のためにそのようなクエリの使用を避けるための免責事項が適用されます。あなたが同じことに気づいていないならば、グーグルsql injection / prepared statements / parameterized queriesなどをしてください。

于 2012-10-06T13:58:03.233 に答える