0

ユーザーがデータベースに最大10個のレコードを入力できるようにするページがあります。私が抱えている問題は、多くの(ほとんどの)場合、ユーザーは1つまたは2つのレコードしか入力しないということですが、データベース挿入はすべての空白のレコードを処理し、それらも挿入します。NULL値を受け入れないようにDBを構成しましたが、空白の値はNULLと完全に同等ではないと思われるため、レコードはまだ挿入されています。空白のレコードがデータベースに挿入されないように、これをコーディングするにはどうすればよいですか。

現在の挿入コード:

    <?php
if (isset($_POST['submit'])) {  

for($i = 0; $i < 10; $i++)
{

$indtypeid = $_POST['indtype'][$i];
$indicator = $_POST['indicator'][$i];
$actorid = $_POST['actor'][$i];
$reportid = $_POST['report'][$i];

print 'Row ' . $i . ': '  . $indtypeid . '-' . $indicator . '-' . $actorid . '<br/>';

$qry_digestreport = "INSERT INTO indicator (indtypeid,indicator,actorid,reportid) VALUES ('$indtypeid', '$indicator', '$actorid', '$reportid')";


if (!mysql_query($qry_digestreport,$connection))
  {
  die('Error: ' . mysql_error());
  }
echo "<br/>Records added!<br/>";
4

1 に答える 1

2

簡単なif()チェックで次のようになります。

if (empty($indtypeid) || empty($indicator) || ....) {
   continue; // jump to next loop iteration
}

$_POST割り当ての直後。

コードはSQLインジェクション攻撃に対して完全に脆弱であることに注意してください。そのため、 http://bobby-tables.comでそれについて少し読むことをお勧めします。

于 2012-04-10T18:53:30.983 に答える