PHP和Mysql中非常基本的问题

时间:2011-07-27 17:51:01

标签: php mysql

我有一个数据库并通过PHP访问

我使用所需凭据连接到数据库

我有一个表单(html),我从中获取所需的值以进入数据库

我正在做这样的事情

Values from form
$value = $_POST['id'];
$value1 = $_POST['title'];

并使用像这样的mysql语法

$sql = "UPDATE table SET title='$value1' where id ='$value'";

“”或“??”

中是否存在语法错误

如何在PHP中显示错误?

帮助表示赞赏

3 个答案:

答案 0 :(得分:2)

您很可能在$ value1中插入单引号,这会导致字符串突然终止。

一个简单的解决方法是:

$value1 = mysql_real_escape_string($_POST['title']);

您应该转义来自用户输入的所有值,因为这是保护应用程序时的首要且最重要的步骤。无需转义数据,您的应用程序很容易被破解。

答案 1 :(得分:2)

您的代码看起来很好,语法没有问题。

然而,您应该考虑转义表单中输入的任何内容(查找:mysql_real_escape_string)。

要在PHP中显示错误,请编辑PHP.INI文件(搜索“错误”并阅读注释以确定如何设置级别),或者按代码编写:

 error_reporting(E_ALL);
 ini_set("display_errors", 1); 

希望这有帮助,尽情享受!

答案 2 :(得分:1)

您可能在$value$value1中包含'的值。这会强制语法错误,并且还会证明您的代码易受SQL注入攻击。

使用mysql_real_escape_string()

转义这两个值
$value = mysql_real_escape_string($_POST['id']);
$value1 = mysql_real_escape_string($_POST['title']);

假设$value == "O'brien"

您的SQL变为:

$sql = "UPDATE table SET title='$value1' where id ='O'brien'";

MySQL引擎会看到以下内容,其中包含一个额外的',后跟无效代码。

UPDATE table SET title='something' where id ='O'brien';