Php 删除varchar类型的SQL中的行时出现问题

Php 删除varchar类型的SQL中的行时出现问题,php,Php,我试图创建一个表单,根据用户从选项下拉列表中选择的属性删除表中的一行。出于某种原因,第一个选项(attemptid)是一个int,可以工作,但其他三个选项(varchar)不能工作。我为调试脚本而设置的错误处理返回1或true,但相关行未被删除 救命啊!我已经尝试了所有的方法,但我只是在学习PHP,所以想象一下我错过了一些非常简单的东西 require_once("settings.php"); $conn = @mysqli_connect($host, $user, $pass, $db);

我试图创建一个表单,根据用户从选项下拉列表中选择的属性删除表中的一行。出于某种原因,第一个选项(attemptid)是一个int,可以工作,但其他三个选项(varchar)不能工作。我为调试脚本而设置的错误处理返回
1
true
,但相关行未被删除

救命啊!我已经尝试了所有的方法,但我只是在学习PHP,所以想象一下我错过了一些非常简单的东西

require_once("settings.php");
$conn = @mysqli_connect($host, $user, $pass, $db);
if ($conn) {
?>
   <form method="post" action="delete_attempts.php" name="delete_attempts" id="delete_attempts" >
      <label for="deleteby">
      <p>Select an option to delete results by:</p>
      </label>
      <select name="deleteby">
      <option value="attemptid">Attempt ID</option>
      <option value="firstname">First Name</option>
      <option value="lastname">Last Name</option>
      <option value="studentid">Student ID</option>
      </select>
      <p></p>
      <input type="text" name="delvalue" placeholder="Value">
      <div>
        <input type="submit" value="Delete Record" id="submit" />
      </div>
    </form>
    <?php
    if (isset($_POST["delvalue"])) {
       // get value from form
       $delValue = trim($_POST["delvalue"]);
       echo $delValue;
        // queries to delete record
       $queryAttemptId = "DELETE FROM quizattempts WHERE attemptid = '$delValue'";
        $queryFirstName = "DELETE FROM quizattempts WHERE firstname = '$delValue'";
        $queryLastName = "DELETE FROM quizattempts WHERE lastname = '$delValue'";
        $queryStudentId = "DELETE FROM quizattempts WHERE studentid = '$delValue'";


       //select which value to search for
        if ($_POST["deleteby"] = "attemptid")   {
             // pass query to database
            $result   = mysqli_query($conn, $queryAttemptId);
        } // end delete attemptid
        else if ($_POST["deleteby"] = "firstname")   {
             // pass query to database
            $result   = mysqli_query($conn, $queryFirstName);
        } // end delete firstname
        else if ($_POST["deleteby"] = "lastname")   {
             // pass query to database
            $result   = mysqli_query($conn, $queryLastName);
        } // end delete lastname
        else if ($_POST["deleteby"] = "studentid")   {
             // pass query to database
            $result   = mysqli_query($conn, $queryStudentId);
        } // end delete student id

        echo  "this is the result $result";

        // if query is successful are found
        if ($result) {
            echo "<p>Delete operation successful</p>";
        } // end if result found
        else {
            // if no record is found in DB
            echo "<p>No records found</p>";
        } // end if no result found
    } //isset($_POST["attemptid"])
} //$conn

?>
require_once(“settings.php”);
$conn=@mysqli_connect($host、$user、$pass、$db);
如果($conn){
?>
选择一个选项以通过以下方式删除结果:

尝试ID 名字 姓 学生证

这应该是
=
。您编写的代码将
“attemptid”
分配给
$\u POST[“deleteby”]
,然后返回相同的值…该值始终为真。因此,您的另一个
else if
从未检查过


同样,你编写的代码是“强”,易受SQL注入<强> >。你已经使用MySQLI;你应该<强>强/强>考虑使用.< /P>所有其他<代码>同样的事情都会发生。如果条件。我现在才发现它。哇!我知道这是新手错误,但我不认为它会如此荒谬!谢谢!。我们才刚刚开始学习PHP,还没有涉及SQL注入,但我将研究准备好的语句。谢谢。web上存在很多安全问题,PHP并没有为您提供任何保护。(PHP和其他语言的框架可能会有所帮助。)在您了解并了解如何防范之前,不要部署任何严肃的东西。此外,出于种种原因,我倾向于建议您学习除PHP之外的任何东西,但听起来您似乎已经有点被锁定了:)

        if ($_POST["deleteby"] = "attemptid")   {