我有一个数据库并通过PHP访问
我使用所需凭据连接到数据库
我有一个表单(html),我从中获取所需的值以进入数据库
我正在做这样的事情
Values from form
$value = $_POST['id'];
$value1 = $_POST['title'];
并使用像这样的mysql语法
$sql = "UPDATE table SET title='$value1' where id ='$value'";
“”或“??”
中是否存在语法错误如何在PHP中显示错误?
帮助表示赞赏
答案 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';