Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我的sql查询无法完全工作_Php_Mysql - Fatal编程技术网

Php 我的sql查询无法完全工作

Php 我的sql查询无法完全工作,php,mysql,Php,Mysql,我正在使用将数据添加到数据库中。首先,我从post获取值,然后将其插入表中。问题是总共有7个值,但只添加了5个值,其中2个未插入表中。这是我的密码 if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] )) { $degree_title = $_POST['degree_title']; $degree_year = $_POST['degree_year'];

我正在使用将数据添加到数据库中。首先,我从post获取值,然后将其插入表中。问题是总共有7个值,但只添加了5个值,其中2个未插入表中。这是我的密码

if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] )) {
        $degree_title = $_POST['degree_title'];
        $degree_year = $_POST['degree_year'];
        $uni_name = $_POST['uni_name'];
        $degree_level = $_POST['degree_level'];
        $major_sub = $_POST['major_sub'];



        $run = mysql_query("INSERT INTO `career_fourudb`.`tffeck_employee_edu` (`id`, `employee_id`, `degree`, `year`, `degree_level`, `major_degree`, `uni`) 
        VALUES (NULL, $eme_uid, $degree_title, $degree_year, $degree_level, $major_sub, $uni_name)");


    }

我回应了所有的值,所有的值都来了,所以为什么它们都没有插入到表中呢。谢谢

如果
id
为自动递增,则无需插入

试试这个

     $run = mysql_query("INSERT INTO `career_fourudb`.`tffeck_employee_edu` (`employee_id`, `degree`, `year`, `degree_level`, `major_degree`, `uni`) 
    VALUES ($eme_uid, $degree_title, $degree_year, $degree_level, $major_sub, $uni_name)");
尝试:

我强烈建议:

1) 不要使用mysql,因为它已被弃用,请使用mysqli_*


2) 在SQL语句中使用之前,请清理_POST中的所有值。

我猜,
$degree\u title
$uni\u name
不会被插入,因为它们是varchar。在这种情况下,必须在这些值周围加引号

Mysql有点“宽容”,因为它在sql语句中使用与列的实际类型相关的错误类型时不会抛出错误

试试看:

$run = mysql_query("INSERT INTO `career_fourudb`.`tffeck_employee_edu` (`id`, `employee_id`, `degree`, `year`, `degree_level`, `major_degree`, `uni`)
      VALUES (NULL, $eme_uid, '$degree_title', $degree_year, $degree_level, $major_sub, '$uni_name')");

如前所述,id不必包含在insert语句中(如果id列是自动增量的),您应该真正了解mysqli或PDO。

值中的字符串必须位于“$degree\u title”中。变得现代:学习将mysqli或PDO与准备好的语句和绑定变量一起使用,那么你就不会有这个问题了——你会希望任何与教育机构相关的编码都将使用本世纪的实践,而不是上个世纪的实践century@MarkBaker+1,问题是有太多的“坏”想成为howto…如果你只是在学习PHP,那么,我建议您阅读html表单的外观。这对$degree之类的字符串字段没有帮助_title@echo_me它不起作用,也不意味着你是否删除了id。这两种方法都适用,但主要问题是为什么只插入了5个值,我猜
$eme\u uid
没有插入koz我看不出您正在定义它。之所以插入它,是因为我从会话中获取了值。未插入的两个值是degree_title和major_subcheck your session_start()。我不需要看你的代码就可以帮你。我是php新手,所以我真的不知道该由谁来使用它。搜索“php清理用户值”并仔细查看链接表单Mark Baker我使用mysqli和sanize,但它仍然有相同的问题。仅插入5个值而不是全部7个值。是否确实已填充缺少的2个值
var\u dump($\u POST)
要验证是的,我确信两个缺少的值都已填充。我还验证了字段名称的每一件事,它从未发生过,在我真的很困惑我错过了什么
$run = mysql_query("INSERT INTO `career_fourudb`.`tffeck_employee_edu` (`id`, `employee_id`, `degree`, `year`, `degree_level`, `major_degree`, `uni`)
      VALUES (NULL, $eme_uid, '$degree_title', $degree_year, $degree_level, $major_sub, '$uni_name')");