【发布时间】:2011-04-12 14:12:57
【问题描述】:
我在这里遇到了一些问题。我正在尝试为我的公司开发一个闪存数据库管理器,并且我已经让插入和“搜索”功能正常工作。尝试使 UPDATE 工作时出现问题。我将在此处发布两个代码:
PHP(更新)
<?php
//connect to the local MySQL
$connect=mysql_connect("localhost", "****", "****");
//select your database
mysql_select_db("****");
//Variables
$ID=$_POST[IDPost];
$Nome=$_POST[Nome];
$Tipo=$_POST[Tipo];
$Empresa=$_POST[Empresa];
$Morada=$_POST[Morada];
$CodPostal=$_POST[CodPostal];
$Email=$_POST[Email];
$Contacto1=$_POST[Contacto1];
$Contacto2=$_POST[Contacto2];
$DataNascimento=$_POST[DataNascimento];
$Profissao=$_POST[Profissao];
$Notas1=$_POST[Notas1];
$Notas2=$_POST[Notas2];
//query the database
$query="
UPDATE
GestaoClientes
SET
Nome = '$Nome',
Tipo = '$Tipo',
Empresa = '$Empresa',
Morada = '$Morada',
CodPostal = '$CodPostal',
Email = '$Email',
Contacto1 = '$Contacto1',
Contacto2 = '$Contacto2',
DataNascimento = '$DataNascimento',
Profissao = '$Profissao',
Notas1 = '$Notas1',
Notas2 = '$Notas2'
WHERE
ID = '$ID'";
$result=mysql_query($query);
if (!mysql_query($query,$connect))
{
die('Error: ' . mysql_error());
echo "Result=NotOk";
}else{
echo "Result=Ok";
}
mysql_close($connect);
?>
闪现
public function editInfo(MouseEvent):void
{
var request:URLRequest = new URLRequest ("link.php");
request.method = URLRequestMethod.POST;
trace("called");
var variables:URLVariables = new URLVariables();
variables.IDPost = NField.text;
variables.Nome = NomeField.text;
variables.Email = NomeField.text;
variables.Morada = MoradaField.text;
variables.CodPostal = CodPostalField.text;
variables.Tipo = TipoField.text;
variables.Empresa = EmpresaField.text;
variables.Profissao = ProfissaoField.text
variables.DataNascimento = DataNascimentoField.text;
variables.Notas1 = Notas1Field.text;
variables.Notas2 = Notas2Field.text;
request.data = variables;
var loader:URLLoader = new URLLoader (request);
loader.addEventListener(Event.COMPLETE, onComplete);
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.load(request);
function onComplete(e:Event):void
{
trace("ok");
}
}
当我尝试在浏览器中访问 php 时,如果只是给了我错误:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Nome' = '', 'Tipo' = '', 'Empresa' = '', 'Morada' = '', 'CodPostal' = '', 'Emai' at line 4
这可能是正常的,因为我没有通过浏览器传递任何“POST”变量。
尝试此代码时,闪存不会返回任何错误,因此我认为连接本身是好的,但它也不会进行更新。这段代码有问题吗?谢谢。
更新:我现在更改了我的代码,它没有显示语法错误,但仍然没有在闪存中更新。任何想法为什么? :/ 谢谢
【问题讨论】:
-
您应该先转义所有 $_POST 变量,然后再尝试对它们进行 SQL 查询。
-
什么是“PHP 数据库”?您的 SQL 注入预防措施在哪里?
-
@Marco,你的 PHP 太可怕了。您对无数攻击持开放态度,并且可能一些粗略的数据正在破坏您的查询。您应该为您的数据库工作实施 PDO。见phpro.org/tutorials/Introduction-to-PHP-PDO.html
-
@Brad 他正在做的事情可以使用
mysql_*系列函数完美且安全地完成。无需为小型 Flash 辅助工具切换 PDO -
我对此很陌生,我只是想让它尽可能轻松地工作,所以我不知道你对 sql 注入预防的意思。 o_o 另一方面,我隐藏了数据库名称并通过了,但我相信它的工作原理,正如我所说,flash 在调用它时不会返回任何错误,而且我已经在 INSERT 和普通 SELECT 中完成了这些操作。对不起,我刚刚开始,只是从网上抓了一些教程,然后从那里开始。
标签: php mysql flash actionscript-3