数据不会进入数据库

时间:2018-04-18 20:39:20

标签: php mysql

出于某种原因,$query3$query4会抛出此错误

  

无法输入数据:SQL语法中有错误;检查   与您的MariaDB服务器版本对应的手册   在第1行'WHERE job_id ='35'附近使用的语法

我不明白为什么它这样做,查询语法似乎没问题。

表格结构: https://imgur.com/a/ioOKZ

Actionpage7:

session_start();
require 'config.php';


$id = $_SESSION['login_user'];

$bidid = $_POST['bid_id'];
$jobid = $_POST['job_id'];
$bidder_id = $_POST['bidder_id'];
$bid_amount = $_POST['bid_amount'];

$query = " UPDATE bid SET status = '1' WHERE  bid_id = '$bidid'";
$success = $conn->query($query);

$query2 = " UPDATE job SET accepted = '1' WHERE  job_id = '$jobid'";
$success = $conn->query($query2);

$query3 = "INSERT into job (accepted_bidder) VALUES('" . $bidder_id . "') WHERE  job_id = '$jobid'";
$success = $conn->query($query3);

$query4 = "INSERT into job (accepted_bid) VALUES('" . $bid_amount . "') WHERE job_id = '$jobid'";
$success = $conn->query($query4);

if(!$success) {
    die("Couldn't enter data: " . $conn->error);
}

echo "Thank You For Contacting Us <br>";
header("location: myjobs.php");
$conn->close();

2 个答案:

答案 0 :(得分:3)

您可以在一个查询中执行此操作:

UPDATE job SET 
    accepted = '1',
    accepted_bidder = 'value',
    accepted_bid = 'value'
WHERE job_id = '$jobid'

如评论中所述 - 您的代码容易受到SQL注入攻击。请参阅this topic了解更多信息。

答案 1 :(得分:0)

这里有两种类型的查询。

查询1和2是更新

$query = " UPDATE bid SET status = '1' WHERE  bid_id = '$bidid'";
$query2 = " UPDATE job SET accepted = '1' WHERE  job_id = '$jobid'";

他们说UPDATE 和SET = WHERE 条件为真。顾名思义,这会更新现有行。该条件用于限制应用更新的行。没有它,每次出价都会将其状态设置为1,并且每项工作都将被接受。这可能不太好。

查询3和4是插入

$query3 = "INSERT into job (accepted_bidder) VALUES('" . $bidder_id . "') WHERE  job_id = '$jobid'";
$query4 = "INSERT into job (accepted_bid) VALUES('" . $bid_amount . "') WHERE job_id = '$jobid'";

他们说使用(列... )INSERT到 table 中有VALUES(值... )WHERE condition < / em>的。名称再说一遍,INSERT将新行插入表中。现在问题是什么是WHERE子句应该做什么?

您是否尝试将插入的行限制为仅限于符合条件的行?那么你是那个说要插入什么行的人,所以你真的不需要这样做。您是否尝试在要插入的行上设置值?那么你可以通过向列列表中添加更多列以及将它们各自的值添加到值列表来实现。事实证明,INSERT语句中的WHERE子句并没有太多指向,事实上它是不允许的。这就是错误试图告诉你的。

正如另一个答案所说,您可能希望更新现有作业,而不是插入新作业。