PHPコードは構文的に正しいですが、値を区切るために引用符を使用していないため、生成されたSQLは正しくありません。
あなたはこれを行うことができます:
$insert = 'INSERT INTO boleia VALUES ("'.$nick.'", "'.$data_format.'", "'.$custo.'", "'.$dest_origem.'", "'.$dest_destino.'", NULL, "'.$matricula.'");';
またはこれ:
$insert = "INSERT INTO boleia VALUES ('".$nick."', '".$data_format."', '".$custo."', '".$dest_origem."', '".$dest_destino."', NULL, '".$matricula."');';
これを行うこともできます:
$insert = "INSERT INTO boleia VALUES ('$nick', '$data_format', '$custo', '$dest_origem', '$dest_destino', NULL, '$matricula');";
ただし、 SQLインジェクションに対して脆弱であるため、その方法は推奨されません。
SQLインジェクションを防ぐ方法は?
たとえば、PostgreSQLを使用しているため、DBに適切な関数を使用して値をエスケープする必要がないようにするには、すべての値にpg_escape_string()を使用する必要があります。
$insert = 'INSERT INTO boleia VALUES ("'.pg_escape_string($nick).'", "'.pg_escape_string($data_format).'", "'.pg_escape_string($custo).'", "'.pg_escape_string($dest_origem).'", "'.pg_escape_string($dest_destino).'", NULL, "'.pg_escape_string($matricula).'");';
もう1つの方法は、pg_prepare()をpg_execute()とともに使用することです。
pg_prepare($dbconn, "my_insert", 'INSERT INTO boleia VALUES ($1, $2, $3, $4, $5, NULL, $6);');
pg_execute($dbconn, "my_insert", array($nick, $data_format, $custo, $dest_origem, $dest_destino, $matricula));
または、pg_query_params()を使用することもできます
pg_query_params($dbconn, 'INSERT INTO boleia VALUES ($1, $2, $3, $4, $5, NULL, $6);',
array($nick, $data_format, $custo, $dest_origem, $dest_destino, $matricula));