【解決方法】PHP 変数を SQL クエリ ステートメントに追加する

プログラミングQA

[ad_1]

こんにちは、変数のデータを MYSQLI ステートメントに入れる必要がありますが、何かがうまくいかず、次のメッセージが表示され続けます。

Parse error: syntax error, unexpected '$nr' (T_VARIABLE) in E:\xampp\htdocs\test3\zgloszenie.php on line 13

私のPHPコード:

<?php
$host='localhost';
$user='root';
$pass='';
$db='ratownictwo';
$nr = $_POST['nzr'];
$ndz = $_POST['nd'];
$adde = $_POST['add'];
echo $nr;


$conn=mysqli_connect($host,$user,$pass,$db);
$q = 'INSERT INTO `zgloszenia` (ratownicy_id, dyspozytorzy_id, adres, pilne, czas_zgloszenia) VALUES ('$nr','$ndz','$adde', 0, CURRENT_TIME)';
$ress= mysqli_query($conn, $q) or die ('Coś poszło nie tak');
mysqli_close($conn);
?>

および HTML コードの一部:

<div class="glowny">
            <h2>Dodaj nowe zgłoszenie</h2>
            <form action="zgloszenie.php" method="POST">
                <label for="nzr">Numer zespołu ratowniczego</label><br/>
                <input type="number" name='nzr'><br/>
                <label for="nd">Numer dyspozytora</label><br/>
                <input type="number" name='nd'><br/>
                <label for="add">Adres</label><br/>
                <input type="text" name='add' size="100"><br/>

                <input type="reset" value='WYCZYŚĆ'>
                <input type="submit" value='ZGŁOŚ'>
            </form>

        </div>

フォーム セクションからのデータは通常 PHP コードに渡されますが、私の SQLi 構文はこの内容を読み取ってそれらに入れることができません。

私が試したこと:

こんにちは、変数のデータを MYSQLI ステートメントに入れる必要がありますが、何かがうまくいかず、次のメッセージが表示され続けます。

解決策 3

$q = “INSERT INTO コール (rescuers_id、dispatchers_id、address、urgent、call_time) VALUES (‘ “.$nzr.” ‘,’ “.$nd.” ‘,’ “.$add.” ‘, 0, CURRENT_TIME )”;

解決策 1

あなたのコードは脆弱です SQL インジェクション[^]. 一度もない 文字列連結を使用して SQL クエリを作成します。 いつも パラメータ化されたクエリを使用します。

PHP: SQL インジェクション – マニュアル[^]
PHP: プリペアド ステートメントとストアド プロシージャ – Manual[^]

その脆弱性を修正すると、エラーがなくなります。

解決策 2

この問題の解決策は非常に簡単なので、以下に配置します。

$q = "INSERT INTO `zgloszenia` (ratownicy_id, dyspozytorzy_id, adres, pilne, czas_zgloszenia) VALUES ('$nzr','$nd','$add', 0, CURRENT_TIME)";

問題は私の (‘) であり、(“) に変更する必要があります。
答えてくれてありがとう!

[ad_2]

コメント

タイトルとURLをコピーしました