0

オフィスのテレビに表示される非常にシンプルな Web サイトを作成しています。index.php ページはフォームで、3 つのフィールドがあります。フォームの方法は投稿であり、そこにあるものはすべて正しいです。

次に、次のページにこのコードを配置します。これは、送信後にフォームが指すページです。

 mysql_select_db("figs", $con);

mysql_query("UPDATE stats SET slots_sold=$_POST[slots_sold], total_figure=$_POST[total_figure], apps_sat=$_POST[apps_sat]");


mysql_close($con);
?>

問題は、テーブルが更新されているときと更新されていないときがあることです。誰かに理由がありますか? それは本当に簡単で、魅力的に働くと思いました。

4

2 に答える 2

2

渡されたデータを検証していません。また、準備済みステートメントに MySQLi を使用して、物事を少し安全にすることをお勧めします。

// create a new MySQLi object
$mysqli = new mysqli('host', 'user', 'password', 'database');

// create var for each POST array item you need
$slots_sold   = $_POST['slots_sold'];
$total_figure = $_POST['total_figure'];
$apps_sat     = $_POST['apps_sat'];

//check to make sure each field is set
if(isset($slots_sold) && isset($total_figure) && isset($apps_sat))
{    
     // prepare mysqli statement for your data
     if($stmt->prepare("UPDATE stats SET `slots_sold` = ?, `total_figure` = ?, `apps_sat` = ?"))
     {  
         // bind each variable to query, respectively (? is place holder for var)
         // s = string ('sss' means three strings). i = integer if needed
         $stmt->bind_param('sss', $slots_sold, $total_figure, $apps_sat);
         $stmt->execute(); // execute your query
     }
     else
     {
         $stmt->error; // there was an error with the query, show the error
     }
}
else
{
     echo 'You did not fill out all of the fields.';
}

$stmt->close; // close mysqli connection

これが少し役立つことを願っています。渡すデータに応じて、 preg_match を使用してそれぞれのデータをチェックします。以下に、開始するための非常に単純な正規表現をいくつか示します。

/[a-zA-Z ]+/     (Any letter, lowercase or uppercase including spaces atleast once)
/[a-zA-Z]+/      (Same as above, without spaces atleast once)
/[a-zA-Z0-9]+/   (Any letter, lowercase or uppercase including numbers atleast once)
/[0-9]+/         (Any number atleast once)

preg_match('/[a-zA-Z]+/', $str, $matches); // you can throw this in a for loop to check each var if they all require the same pattern
于 2013-01-22T14:38:45.647 に答える
1

これを試して:

$sold  = $_POST['slots_sold'];
$total = $_POST['total_figure'];
$app   = $_POST['apps_sat'];

mysql_query("UPDATE stats SET slots_sold='$sold', total_figure='$total', apps_sat='$app'");

また、 mysqlPDOを確認することをお勧めします

于 2013-01-22T14:21:29.500 に答える