为什么 mysql 插入到查询中在 php 应用程序中不起作用


Why mysql Insert into query not working in php application

执行查询时,它不起作用,它将打印错误。 $q打印它时也不会来。 但是 $_SESSION["用户名"]; 在工作吗?

      <?php
      session_start();
     $_SESSION["username"];
      include 'Db_Connection.php';
      $q= $_GET[q];
    $username= $_SESSION[username];
   echo $username;
    echo $q;
    $sql="INSERT INTO search(searcher,searched_time,searched_email) 
      VALUES ('$username',NOW(),'$q')";                   
     $result = mysqli_query($con,$sql);
     if($result)
       {
    echo "Success";
        }
       else
       {
       echo "Error";
          }
     ?>

我可以从您提供的代码中获取一些内容。

  1. 您的第二行$_SESSION["username"];是多余的,因为它什么都不做
  2. 您正在使用已弃用的 mysql_* 函数
  3. 您没有使用预准备语句将变量插入查询

尝试这样的事情:

session_start();
//start assuming this is in your connection file
$con = new mysqli("db-ip-address", "db-user", "db-pass", "db-name")
//end assuming
$q= $_GET[q];
$username= $_SESSION[username];
echo $username;
echo $q;
$sql="INSERT INTO search(searcher,searched_time,searched_email) VALUES (?,NOW(),?)";
$stmt = $con->prepare($sql);
$stmt->bind_param("ss", $username, $q);
$result = $stmt->execute();
if($result) {
    echo "Success";
} else {
    echo "Error";
}
//remember to cleanup connections etc

只要值$q不打印出来,请确保该值是通过 GET 查询字符串http://someurl.com/somefile.php?q=some-value设置的,并且$q不是一些奇怪的不可打印的值。如果要确认已设置该值,请尝试运行 var_dump($_GET) 以输出 $_GET 数组的内容,以确保确实设置了值。

我相信

这是你的问题:

$q= $_GET[q];

q 应该用引号括起来,例如:

$q = $_GET['q'];

除此之外,达蒙说的是完全正确的。