Php MySQL查询不是';没有被执行
我有一张表格,我通过邮寄的方式从中获取数据。我还使用该数据和两个查询更新两个单独的表。我的第一个查询运行良好,它按预期将数据插入表中,我的第二个查询几乎相同,但将数据插入另一个表中,它不起作用。我的代码是这样的Php MySQL查询不是';没有被执行,php,mysql,mysqli,Php,Mysql,Mysqli,我有一张表格,我通过邮寄的方式从中获取数据。我还使用该数据和两个查询更新两个单独的表。我的第一个查询运行良好,它按预期将数据插入表中,我的第二个查询几乎相同,但将数据插入另一个表中,它不起作用。我的代码是这样的 // First good query is here. $selected_employee = $_POST['employees']; $date = date('y-m-d H:i:s'); $qry4 = "INSERT INTO employee_leads (emp
// First good query is here.
$selected_employee = $_POST['employees'];
$date = date('y-m-d H:i:s');
$qry4 = "INSERT INTO employee_leads (emp_id_fk, lead_id_fk, subject_fk,
date)
VALUES ('$selected_employee', '{$_GET['id']}','$subject' , '$date' )";
$result4 = mysqli_query($con, $qry4);
// second query which isn't working
$qryChosen = " INSERT INTO lead_status (lead_id_fk, buss_id_fk, emp_id_fk)
VALUES ('{$_GET['id']}', '$userid', '$selected_employee') ";
$resultChosen= mysqli_query($con,$qryChosen);
if(!$resultChosen) {echo "Employee record error #400 "; }
似乎它也不会迭代if(!$resultChosen)
语句,因为我没有收到关于没有对数据库执行查询的回音。谢谢
编辑我已添加此代码$rowselected=mysqli\u fetch\u assoc($resultChosen)代码>因为如果查询有问题,它会显示出来,并且它给了我一个错误mysqli_fetch_assoc()期望参数1是mysqli_result,给定布尔值
据我所知,当查询出错时会发生这种情况,我不确定哪里可能出错?P.S$userid
定义在页面顶部,应该可以访问
EDIT-2添加了echo“错误在”。mysqli_错误($con)代码>并且它完全没有显示错误。首先检查表格和列中的打字错误,然后尝试删除from行11
和12
<?php
// First good query is here.
$selected_employee = $_POST['employees'];
$date = date('y-m-d H:i:s');
$qry4 = "INSERT INTO employee_leads (emp_id_fk, lead_id_fk, subject_fk,
date)
VALUES ('$selected_employee', '{$_GET['id']}','$subject' , '$date' )";
$result4 = mysqli_query($con, $qry4);
if($result4) {
// second query which isn't working
$qryChosen = "INSERT INTO lead_status (lead_id_fk, buss_id_fk, emp_id_fk)
VALUES ('{$_GET['id']}', '$userid', '$selected_employee')";
$resultChosen = mysqli_query($con, $qryChosen);
if(!$resultChosen) {
echo "Employee record error #400 ";
}
}
?>
请不要使用不推荐的mysql\u查询。改用PDO
<?php
$con = new PDO("mysql:host=$host;dbname=$db;", $user, $pw);
// First good query is here.
$selected_employee = $_POST['employees'];
$date = date('y-m-d H:i:s');
$qry4 = "INSERT INTO employee_leads (emp_id_fk, lead_id_fk, subject_fk,
date) VALUES (:selected_employee, :get_id, :subject , :date )";
$result4 = $con->execute(array(
":selected_employee" => $selected_employee,
":get_id" => $_GET['id'],
":subject" => $subject,
":date" => $date
));
if($result4) {
// second query which isn't working
$qryChosen = "INSERT INTO lead_status (lead_id_fk, buss_id_fk, emp_id_fk)
VALUES (:get_id, :user_id, :selected_employee)";
$resultChosen = mysqli_query($con, $qryChosen);
$resultChosen = $con->execute(array(
":get_id" => $_GET['id'],
":selected_employee" => $selected_employee,
":user_id" => $userid
));
if(!$resultChosen) {
echo "Employee record error #400 ";
}
}
$rowChosen = $resultChosen->fetch(PDO::FETCH_ASSOC);
?>
您应该检查真正的错误(如果有)。你没有这么做。还对SQL注入攻击敞开大门Badbuss\u id\u fk
?如果不知道您遇到了什么错误,很难说…@wogsland我在文件的最顶端定义了$userid,所以它应该可以访问它没有问题吧?我正在研究如何让它报告问题。谢谢如果您的date
列属于DATETIME
类型,那么您的date('y-m-dh:i:s')
失败,除非您将其存储在VARCHAR
类型的列中。我只是想你可能想知道。查询中没有打字错误,我不知道你所说的空格是什么意思?如果这是您的意思,字符串中的空格不应使其无效。谢谢。如果不是打字错误,那么可以,空格表示您正在使用$qryChosen=“INSERT
,因此您必须删除双引号”
和插入之间的空格,这样看起来就像“INSERT
也删除之间的空格)
结束双引号”
,所以它看起来像这样()";代码>这样做了,并删除了字符串开头的空格,但没有效果。谢谢您的建议。@MarwanAK那么您必须在列中缺少一些不能为空的值,请尝试echo$qryChosen代码>并查看在将变量INSERT回显到lead_status(lead_id_fk、buss_id_fk、emp_id_fk)值('18','72','20')时发生的情况。值18,72,20是正确的。我使用的是mysqli
库,它不是不推荐的bro。感谢您的全面重写,我在粘贴副本时遇到了一个错误,即}
,我必须检查代码并测试它,但我需要时间,因为我以前从未用PDO风格编写过。无论如何,用mysqli
编写应该不会有问题,因为库很好。问题是,$qryChosen
中的查询由于某种原因无法工作,这就是问题所在。谢谢。它仍然是sql可注入的。可能是“{$\u GET['id']}”产生了错误。请尝试“{$\u GET[“id”]}”。我从未使用过mysqli,但据我所知,它不会再出现在字符串中了。是的,我知道它是SQL可注入的。一旦一切正常,我将使用准备好的语句。尝试完全删除该变量并得到相同的结果。谢谢