Php 如何保护此表单不受SQL注入的影响

Php 如何保护此表单不受SQL注入的影响,php,mysql,validation,Php,Mysql,Validation,可能重复: 想知道如何验证此提交表单的输入。通过验证,我的意思是保证它不受SQL注入的影响。任何帮助都将不胜感激。多谢各位 <?php session_start(); if(!session_is_registered(ausername)){ header("location:main_login.php"); } include ("header.php"); include ("../db.php"); $catname = $_POST['catname']; $catdi

可能重复:

想知道如何验证此提交表单的输入。通过验证,我的意思是保证它不受SQL注入的影响。任何帮助都将不胜感激。多谢各位

<?php

session_start();
if(!session_is_registered(ausername)){
header("location:main_login.php");
}
include ("header.php");
include ("../db.php");

$catname = $_POST['catname'];
$catdisc = $_POST['catdisc'];

$id = $_GET['id'];
        if (isset($id))
        {
$query = "SELECT * FROM categories WHERE catid='$id'";
$result= mysql_query($query) or die ('Mysql Error');

}
//Get category name and discription
while($row = mysql_fetch_array($result)){
$cname = $row['catname'];
$cdisc = $row['catdisc'];
}
?>

<?php

$result= mysql_query ("UPDATE categories SET catname='$catname', catdisc='$catdisc' WHERE catid='$id'")
or die ('Error Updating'); 

?>

<h1>Edit Categories</h1>

<form method="post" action="../admin/edit_cat.php?id=<?php echo $id;?>">
Category Name: <input type="text" name="catname" value="<?php echo $cname;?>"><br/>
Category Discription: <TEXTAREA NAME="catdisc"ROWS="3" COLS="25"><?php echo $cdisc;?></TEXTAREA><br/><br/>
<input type="submit" value="Update Category"/>
</form>

<?php
include ("footer.php");
?>
字符串(查询中必须使用单引号/双引号!)->

整数(可以不带引号)->


为所有查询变量添加mysql\u real\u escape\u字符串调用,请参见文档中的“避免技术”。

使用数据库库,使用占位符。更好的API,并且免费处理SQL注入


例如,请参见

中的“准备和执行”在处理用户可以更改的值时使用准备好的语句:


它们使SQL注入变得不可能。

我之前修复并回答了这段代码:-1+1我不知道PHP手册中的那一章。它甚至还有一幅卡通画!如果他不将变量用引号括起来,这将不会有帮助;)是的,我知道;)这只是对你/以后读者的警告。
$catname = mysql_real_escape_string($_POST['catname']);
$catdisc = mysql_real_escape_string($_POST['catdisc']);
$id = intval($_GET['id']);

$result= mysql_query ("UPDATE categories SET catname='$catname', catdisc='$catdisc' WHERE catid=$id")