2016-06-19 14 views
2

したがって、データベースに行を追加するPHPフォームがあります。不要なフィールドのいずれかが空の場合、そのフィールドのデフォルト値を使用する必要があります。PHPの行のMySQL値をデフォルト値に設定する

私はこのようなMySQLiをしてこれを実装しようとした:

$required = $_POST["required"]; 
$unrequired = isset($_POST["unrequired"])?$_POST["unrequired"]:"DEFAULT(`Unrequired`)"; 

$sql = $mysqli->prepare("INSERT INTO `table` (`Required`,`Unrequired`) VALUES (?,?)"); 
$sql->bind_param("is",$required,$unrequired); 
$sql->execute(); 

しかし、私はSELECT unrequired FROM table WHERE required = 33を使用して不要なフィールドの値を取得しようとすると、私はDEFAULT( `Unrequired`)を取得の代わりに、デフォルトvarchar列の列の値、intおよびdouble列の場合はです。

この問題は、PHPまたはMySQLによって発生しますか?

メモ:不要なフィールドの一部はnull可能であり、一部はそうではありません。ヌル可能でないものは、デフォルト値が設定されています。 intとdoubleフィールドのデフォルト値の設定は1で、残りはnullです。

+0

DEFAULT( 'Unrequired')とは何ですか? DEFAULT( 'Unrequired')が返され、テーブルに挿入されます。 DEFAULT( 'Unrequired')の代わりにデフォルト値を設定することができます。 –

答えて

0

データベース構造にデフォルト値を設定することはできません。下に例があります。

CREATE TABLE example_table 
(
P_Id int NOT NULL, 
LastName varchar(255) NOT NULL, 
FirstName varchar(255) NOT NULL, 
Address varchar(255), DEFAULT 'unrequired' 
City varchar(255) DEFAULT 'Unrequired' 
) 

あなたが好きなようにあなたのテーブルを作成するとき。テーブルを変更することもできます

ALTER TABLE example_table 
ALTER City SET DEFAULT 'Unrequired' 
+0

いいえ、それは私が求めているものではありません。また、[このMySql 5.5ドキュメント](https://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html#function_default)には、カラムにデフォルト値がない場合にエラーが発生することが記載されています。私が求めているのは、行フィールドの値をそれぞれの列のデフォルト値に設定する方法です。 – Yonic

0

申し訳ありませんが、私は問題を理解したと思います。

私はプリペアドステートメントを使用しておりますので、私はresltingのSQLクエリステートメントに入れすべてのパラメータは、安全な文字列、int型やdouble型に変換されますので、私はDEFAULT(column)のような表現は"DEFAULT(column)"として再解釈されると仮定し、文字列として扱われます。

私は非常に安全な解決策ではありませんが、準備されていない文を使用することを考えました。これはすべてのパラメータを連結し、DEFAULTlike in hereを使用しています。クエリをより安全にするために、文字列にreal_escape_string()を使用します。

+0

代わりに 'mysqli_real_escape_string()'を使ってください。なぜなら、それは最新かつ最も特殊な関数であるはずです(私は思っていますか?)。 PHPは私にはちょっと悲しいことですが、同じような機能がたくさんありますが、同じであるように見えますが、他のものよりも正しいものもあります。一番いい... – ToVine

関連する問題