我一直在尝试使用PHP和SQL访问数据库,然后才能读取并附加到它。
我的问题在于,当我比较不同的构造方式时,我将其设置出来。它没有更新。
$sql = "UPDATE Test SET '$updateGet' = '$appendGet' WHERE id = '$idGet'" ;
在不担心SQL注入的情况下,正确的方法是什么?此外,任何有关其他方法的文档将不胜感激。
<?php
$servername = "localhost";
$username = "jenk3194";
$password = "wlFfn1";
$dbname = "jenk3194";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
$appendGet = ($_GET["appendSend"]); # WHAT TO APPEND
$idGet = ($_GET["idSend"]); # ID TO APPEND
$updateGet = ($_GET["updateSend"]); # WHAT TO UPDATE
#$sql = "UPDATE Test SET Projection = 999 WHERE id = 1";
$sql = "UPDATE Test SET '.$updateGet.' = '.$appendGet.' WHERE id = '.$idGet.'" ;
#$sql= sprintf("UPDATE Test SET %s = %d WHERE id = %d", $updateGet, $appendGet, $idGet);
echo $sql;
?>
答案 0 :(得分:1)
您的SQL应该如下所示:
$sql = "UPDATE Test SET '".$updateGet."' = '".$appendGet."' WHERE id = '".$idGet."';
你需要在php变量之前和之后添加点。如果变量包含字符串,则还需要添加引号。
答案 1 :(得分:0)
你写了一些关于注入的内容,所以首先你可以使用pdo语句作为第一安全性,但请阅读这篇文章Are PDO prepared statements sufficient to prevent SQL injection?。
要安全并始终检查用户输入,如果您正在使用JS进行电子邮件验证,则可以在PHP代码中跳过它。安全性分层次。