尝试通过在url中键入值来插入到数据库中,但在插入到数据库中遇到困难:
以下是URL:
http://student.cs.hioa.no/~s180343/updatedb.php?verdi=22代码如下:
<?php
$dbhost = "MYSQL-SERVER";
$dbuser = "USERNAME";
$dbpass = "";
$verdi = $_GET['verdi'];
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$sql = "INSERT INTO test ('id') VALUES (`$verdi`)";
mysql_select_db('s180350');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not enter data: ' . mysql_error());
}
echo "Entered data successfully\n";
mysql_close($conn);
?>发布于 2014-04-03 21:14:26
在字符串值两边使用引号。在列名两边打勾。你把它倒过来了:
$sql = "INSERT INTO test ('id') VALUES (`$verdi`)";应该是
$sql = "INSERT INTO test (`id`) VALUES ('$verdi')";仅供参考,你对SQL injections很开放
发布于 2014-04-03 21:14:01
您正在进行相反的操作,即为列名添加'',为值添加
$sql = "INSERT INTO test ('id') VALUES (`$verdi`)";应该是
$sql = "INSERT INTO test (`id`) VALUES ('$verdi')";开始使用prepare语句,或至少在定义conn之后使用以下语句。
$verdi = mysql_real_escape_string($verdi);发布于 2014-04-03 21:20:31
请不要忘记保护sql查询中的所有用户输入。请参阅SQL injection wiki
你的代码的问题是在引号上使用错误。请参见编辑后的代码:
$conn = mysql_connect("MYSQL-SERVER", "USERNAME", $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db('s180350');
$retval = mysql_query( "INSERT INTO test ('id') VALUES ('".mysql_real_escape_string($_GET['verdi'])"')", $conn );
if(! $retval )
{
die('Could not enter data: ' . mysql_error());
}
echo "Entered data successfully\n";注:不要通过设置不需要的变量来耗尽资源。
https://stackoverflow.com/questions/22838856
复制相似问题