PHP:如果报表无意中造成多个MySQL列更新?

我有一个包含页面上的表单:

  • 一个文本输入框命名teachername
  • 一个名为一天一个文本输入框(格式为YYYY-MM-DD)
  • 一个名为“资源”的选择框的选项[1图书馆或资料库2]
  • 一个选择框的值[1,2,3和4]命名块。

我的MySQL数据库具有以下字段: - 教师

  • Library1block1
  • Library1block2
  • Library1block3
  • 等等

从HTML页面的数据传递到为了匹配的资源,并用正确的mysql场块,所以从文本输入框“teachername”的数据插入到其更新领域的一个PHP页面。

if ($_POST['resource']="Library 1" and $_POST['block']="1") {mysql_query( "UPDATE Resources SET Teacher='yes', Library1block1='$_POST[teachername]' WHERE Date='$_POST[day]'");} if ($_POST['resource']="Library 1" and $_POST['block']="2") {mysql_query( "UPDATE Resources SET Teacher='yes', Library1block2='$_POST[teachername]' WHERE Date='$_POST[day]'");}

预计: - 输入“史密斯先生”到teachername文本输入栏,选择“库1”和“1”的选择菜单中,并在文本输入字段命名为一天输入“2012-03-16”

  • 数据存储,并沿着PHP脚本传递
  • if语句更新包含在当天文本字段中输入的日期由“资源”领域和“块”字段(library1b1,library1b2等)配套领域的数据库记录
  • 字段被更新,以及随后的if语句检查以匹配与正确的MySQL字段中输入的数据

结果:所有字段(不只是指定字段)是根据所述第一if语句更新。

EX:进入“史密斯先生”为teachername,选择“库1”,选择“1”挡,并输入“2012-03-16”的日期不更新只有Library1block1领域,但它也更新在Library1block2和library2block1领域。

MySQL的声明,直接进入到MySQL终端时,能够正确更新奇领域,但在多个更新的行此PHP代码结果的使用。

请帮助?

--------------解决方案-------------

您正在使用赋值运算符(=)而不是等号(= =)的一个常见的​​错误。 在看起来像这样的线路:

if($_POST['resource']="Library 1")

改变他们使用比较操作:

if($_POST['resource'] == "Library 1")

谁给答案的乡亲做了很好的工作,但我想添加一个小把戏,我想有时使用(根据语言等)

通常你会写一个if语句,就像这样

if ( $var == 1 ) { do_stuff( $var ) }; //or whatever

下面这个简单的小动作使得这个潜在的错误几乎不可能为我做(特别是用PHP)。

只需切换两个左右。

因此而不是通常的:

if ( $var == 1 ) { do_stuff( $var ) }; //or whatever

而是试试这个时,您可以:

if ( 1 == $var ) { do_stuff( $var ) }; //or whatever

我敢肯定的PHP 5.2 +并没有改变,它不再工作的地步,但即使您使用单一平等的凡人错误签名应该仍然工作,因为你不能赋值给一个常数(数字是恒定值,对吧?)。

我相信这依赖于始终处理代码PHP的行为,从左至右依次为:

if ( 1 = $var ) { do_stuff( $var ) }; //or whatever

而你的黄金! 自从我开始5年前这样做了我也不会再碰到这个问题。 1始终为1,不管你做什么。 这是通过你的条件语句,循环思维等在PHP的一个好办法。

这样做的好处是在其头脑简单嫌。 “$ VAR”可以是很多东西,但数量1始终是数字1,我​​敢肯定,这并不适用于所有语言的工作,但对于PHP,这是一个我用了很多,这显然是一个好习惯反正构造代码这种方式。

你应该用两个等号这样你的if语句来比较值

$_POST['resource']=="Library 1"

这将检查是否$_POST['resource']等于(==) Library 1

单个等号分配Library 1$_POST['resource']

您可以检查比较运算符上php.net的详细资料:

http://php.net/manual/en/language.operators.comparison.php

编辑:

您还应该使用mysql_real_escape_string()对用户输入的值,如$ _ POST:

if ($_POST['resource'] == "Library 1" and $_POST['block'] == "2")
{
mysql_query(
"UPDATE Resources
SET
Teacher='yes',
Library1block1='".mysql_real_escape_string($_POST['teachername'])."'
WHERE
Date='".mysql_real_escape_string($_POST['day'])."'"
);
}

分类:php 时间:2012-01-01 人气:0
分享到:

相关文章

  • 单MySQL查询语句分开 2012-01-08

    怎样区分在一个MySQL查询语句? 它是一个分号? 我不认为它很重要,但我写的声明由PHP函数调用 编辑:问题是,我似乎没有udnerstand的UPDATE语法,您可以执行与1 UPDATE语句感谢多个字段 --------------解决方案------------- 使用mysqli_功能(文档),可以使用在相同的字符串传递多个查询mysqli_multi_query (文档) 从文档的例子: /* check connection */ if (mysqli_connect_errno(

  • Python的MYSQL update语句 2012-04-28

    我试图让这个Python的MYSQL更新语句正确的是(带变量): cursor.execute ("UPDATE tblTableName SET Year=%s" % Year ", Month=%s" % Month ", Day=%s" % Day ", Hour=%s" % Hour ", Minute=%s" Minute "WHERE Server=%s " % Server

  • 插入数据库结构到MySQL和PHP? 2012-08-16

    呦. 我试图找到一种方法来插入整个数据库结构到MySQL和PHP. 现在,我的主要问题是,如果有任何的方式来做到这一点不仅仅是插入整个血腥的东西线,由线? 编辑:通过"插入结构",我的意思是添加了数据库和表 - 仅此而已. 谢谢. --------------解决方案------------- $sql = file_get_contents('./some-database-schema-you-trust.sql'); mysql_query($sql); // or mysqli

  • 如何导入数据库与终端MySQL的? 2013-06-20

    如何导入数据库与终端MySQL的? 我找不到确切的语法 --------------解决方案------------- 假设你是一个Linux或Windows控制台上: mysql -u username -ppassword databasename < filename.sql 也可以看看: 4.5.1.5. 从文本文件执行SQL语句 窗户最好的方法: 登录你的MySQL控制台. use <name_of_your_database>; source <path_of_your

  • SQL Server数据库转换到MySQL 2014-07-03

    我对SQL Server 2008 Express的应用程序数据库我专用的服务器上. 这是不够的,我的Web应用程序. 是否有良好的自由转换工具,使我以我目前的SQL Server数据库转换到MySQL我的服务器上. 请问我的web应用程序能正常工作一样吗? --------------解决方案------------- 没有在这个问题足够的信息,因为它的立场,要真正解决围绕Web应用程序是否适用相同的许多问题. 最简单的部分将被转移到其他RDBMS移植的模式和数据. SQL Server有一个

  • 如何检索数据库的C#创建语句表 2012-03-20

    如何检索数据库的C#创建语句表? 我需要创建一个包含创建语句的数据库使用C#现有的表的脚本文件. 我可以生成创建使用helptext在 storedproc的声明,但不能产生它的表. 请帮忙. --------------解决方案------------- 它不支持表虽然快速谷歌给出了一个脚本 http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/28eeb603-1607-4b56-9461-3c0502cbec9c

  • 这是MySQL查询语句是否正确? 2012-04-14

    我想知道这是否MySQL的语句将被正确执行, "SELECT sum(price) FROM products WHERE productid IN (SELECT productid FROM shoppingcart WHERE sessionid=".$this->$sessionid.")" 如果没有,请给我指点到哪里我错了. 谢谢 --------------解决方案------------- 我敢肯定,你的意思 $this->sessioni

  • MySQL的语句来得到所有行的列的值,其中另一列的值=指定值 2012-05-01

    可能有人请给我一个MySQL的语句,将获得列学生的价值,在所有行,列老师的值等于查尔斯? --------------解决方案------------- 如果这个信息是在同一个表,然后 select student from table_name where teacher = 'charles' 如果你有3个表像它应该是(教师,学生,男:对teachers_students否表),请评论,因为那么你需要一个连接.

  • 如何Apache Derby数据库转换到MySQL 2012-06-19

    我想现有的Derby数据库转换到MySQL. --------------解决方案------------- 尝试DBCOPY插件鼠笼SQL客户端,如果你只需要到数据库转换一次. 还有其他工具可能起作用. 我需要转换规律,那么我会用CSV导入/导出(用于数据).

  • 在MySQL select语句回退状态 2012-10-19

    我想提出一个条件到MySQL的语句. 如果这甚至有可能? 这是我目前的mysql的SELECT语句 SELECT * FROM `validproduct` WHERE `visible` = 1 AND `typeid` = 2 AND `sizeid` = 3 GROUP BY `productid` 所以此刻,我在选择产品sizeid = 3.我想要做的是选择具有大小= 1的产品,如果不存在,然后选择sizeid = 3. 我validproducts表中包含的产品与它(这反过来有不同的定

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.504 (s). 10 q(s)