0

ユーザーがテーブルに挿入したい情報のみを挿入できるようにし、一部のフォーム フィールドを空のままにしたい (ユーザーが入力する必要がない場合)。しかし、次の方法でdbテーブル「カタログ」に一部のデータのみを挿入しようとすると:

if (!empty($_POST['name'])){ $name = $_POST['name'];}
if (!empty($_POST['city'])){ $city = $_POST['city'];}
if (!empty($_POST['country'])){ $country= $_POST['country'];}
if (!empty($_POST['year'])){ $year = $_POST['year'];}

$sql = "INSERT INTO catalog(name,city,country,year)VALUES('$name','$city','$country','$year')";
mysql_query($sql);

それは私にエラーを返します:undefined variable.もちろん、私が空のままにしたhtmlフォームフィールドのコンテンツから値を取得するのは同じ変数です。

たとえば、db にデータを挿入するための html フォームをほぼ完成させ、「city」フィールドだけを空のままにしておくと、スクリプトは $city 変数が定義されていないことを知らせるエラーを返します。言い換えれば、データを正常に挿入するためにフィールドを空にする方法はありますか?

ありがとう!

4

3 に答える 3

0

すべてのステートメントを削除するifため、変数にデータが含まれていなくても、ユーザーがそのフィールドに情報を入力していなくても変数を定義できます。したがって、ユーザーが自分の を入力しない場合cityでも、レコードはテーブルに挿入されcatalogますが、値は空になります。city

から

if (!empty($_POST['name'])){ $name = $_POST['name'];}
if (!empty($_POST['city'])){ $city = $_POST['city'];}
if (!empty($_POST['country'])){ $country= $_POST['country'];}
if (!empty($_POST['year'])){ $year = $_POST['year'];}

$name = $_POST['name'];
$city = $_POST['city'];
$country= $_POST['country'];
$year = $_POST['year'];
于 2013-08-21T12:58:19.280 に答える
0

これを試して:

$name = (isset($_POST['name']) && !empty($_POST['name'])) ? $_POST['name'] : '';
$city = (isset($_POST['city']) && !empty($_POST['city'])) ? $_POST['city'] : '';
$country = (isset($_POST['country']) && !empty($_POST['country'])) ? $_POST['country'] : '';
$year = (isset($_POST['year']) && !empty($_POST['year'])) ? $_POST['year'] : '';
于 2013-08-21T13:08:48.633 に答える
0

NULL代わりに挿入:

コードを次のように変更します。

$name = !empty($_POST['name']) ? $_POST['name'] : NULL;
$city = !empty($_POST['city']) ? $_POST['city'] : NULL;
$country = !empty($_POST['country']) ? $_POST['country'] : NULL;
$year = !empty($_POST['year']) ? $_POST['year'] : NULL;

そうすれば、ユーザーがフィールドに値を入力しなかった場合でも、フィールドは NULL になり、データベースに として挿入されますNULLUndefined variableこれにより、通知が削除されます。

于 2013-08-21T13:00:40.820 に答える