繁体   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