簡體   English   中英

如何編寫腳本以更改MySQL數據庫中的整數?

[英]How do I write a script to change an integer in my MySQL database?

我以前幾乎從未用PHP和MySQL編寫過代碼,因此您必須原諒我糟糕的代碼。

我的數據庫中有3列。 ID,類別和需求。

桌子

基本上,我試圖為我編寫頁面編碼的最簡單方法,以便允許用戶將每行的“ Need”值從0更改為1,或從1更改為0。

目前,我在有兩個運行兩個單獨但幾乎相同的腳本的按鈕上工作,它們的唯一目的是將特定行的“ Need”值更改為1或0(如下所示)

<?php
mysql_connect("localhost", "muffins", "sugarcookies") or die(mysql_error());
mysql_select_db("crackers_cheese") or die(mysql_error());

mysql_query("UPDATE recruitment SET Need=1
WHERE ID='1'");

mysql_close($con);

header("location: /admin.html"); 
?>

反向.php文件是相同的,除了“ SET Need = 0”

因此,我可以做什么,而不是擁有22個單獨的.php文件,其唯一目的是將每個特定行設置為0或1。

謝謝!

讓您的按鈕之一發送一個HTTP參數,以指示該字段應為0還是1。此外,還要考慮使用PDO類而不是mysql_ *函數。

這是使用PDO函數可以完成此操作的示例:

PHP代碼

<?php

if(!isset($_POST['need'])) {
    die('Missing need parameter');
} elseif($_POST['need'] !== '0' && $_POST['need'] !== '1') {
    die('Invalid need values');
}

if(!isset($_POST['id']) || !is_numeric($_POST['id'])) {
    die('Missing ID');
}

$db = new \PDO('mysql:dbname=crackers_cheese;host=localhost', 'muffins', 'sugarcookies');
$statement = $db->prepare("UPDATE `recruitment` SET `Need` = :need WHERE `ID`= :id");

$statement->bindValue(':need', $_POST['need'], \PDO::PARAM_INT);
$statement->bindValue(':id', $_POST['id'], \PDO::PARAM_INT);

$statement->execute();

header("location: /admin.html"); 
?>

請注意,由於您在此處使用的是預備語句,因此不需要使用real_escape_string或類似的東西對數據進行轉義,從而減輕了SQL注入攻擊。

優良作法是使用參數綁定而不是連接查詢以防止SQL注入攻擊。 有關更多信息,請參見: PDO准備好的語句是否足以防止SQL注入?

HTML表格

<form method='POST' action='update.php'>
    <label for='id'>ID:</label>
    <input type='number' name='id' id='id'>

    <input type='radio' name='need' value='0' id='needfalse'> <label for='needfalse'>Need = 0</label>
    <input type='radio' name='need' value='1' id='needtrue'> <label for='needtrue'>Need = 1</label>

<button type='submit'>Submit</button>

這不是設計的最佳形式。 我在這里使用了單選按鈕,用實際的按鈕來做會稍微復雜一些,但這足以讓您入門。

假設您只想切換(如果為0,則設置為1;如果為1,則設置為0),則可以使用以下SQL更新語句:

update table_name
set need = abs(need - 1)
where id = 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM