Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.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 主键在更新后更改值-变为0_Php_Mysql_Sql_Sql Update - Fatal编程技术网

Php 主键在更新后更改值-变为0

Php 主键在更新后更改值-变为0,php,mysql,sql,sql-update,Php,Mysql,Sql,Sql Update,看来我找到问题了 由于字段的值是通过获取HTML表单字段名称的子字符串自动生成的,其中一个值显示为id(可以在我下面发布的回音中看到)。更新似乎没有失败,但产生了这种意想不到的行为 感谢所有试图帮忙的人,并为这个愚蠢的问题感到抱歉 在执行update语句之后,如 UPDATE tablename SET field='value' WHERE field='value' 在不接触主键的情况下,它会将其值从以前的值更改为0 有什么想法吗 MySQL服务器版本:5.5.37-0+wheezy1

看来我找到问题了

由于字段的值是通过获取HTML表单字段名称的子字符串自动生成的,其中一个值显示为id(可以在我下面发布的回音中看到)。更新似乎没有失败,但产生了这种意想不到的行为

感谢所有试图帮忙的人,并为这个愚蠢的问题感到抱歉


在执行update语句之后,如

UPDATE tablename SET field='value' WHERE field='value'
在不接触主键的情况下,它会将其值从以前的值更改为0

有什么想法吗

MySQL服务器版本:5.5.37-0+wheezy1

这是生成查询的代码

$query2 = "UPDATE student SET ";

            foreach ($_POST as $the_key => $a_post_arg) {
                if (strcmp($the_key, "student_password") === 0) {
                    //without activation
                    $a_post_arg = md5($a_post_arg);

                    //with activation
                    //$a_post_arg = "Not activated!";
                }
                if (strcmp($the_key, "student_registration_year") === 0)
                    $a_post_arg = $a_post_arg . "-00-00";                   
                if (strcmp(substr($the_key, 0, 14), "student_stats_") === 0 || strcmp($the_key, "student_validationImageTextfield") === 0) {
                    $student_stats[$the_key] = $a_post_arg;
                    continue;
                }

                if (strcmp(substr($the_key, 0, 7), "student") === 0 && strcmp($the_key, "student_email_retype") !== 0 && strcmp($the_key, "student_password_retype") !== 0) {                   

                    if (strcmp($the_key, "student_email") !== 0) {
                        if (strcmp($the_key, "student_select_dept") === 0) {
                            $query2 .= "dept='" . addslashes($a_post_arg) . "', ";
                        } else if (strcmp($the_key, "student_semester") === 0) {
                            $query2 .= "studying_semester='" . addslashes($a_post_arg) . "', ";
                        } else if (strcmp($the_key, "student_father_name") === 0) {
                            $query2 .= "fathers_name='" . addslashes($a_post_arg) . "', ";
                        } else if (strcmp($the_key, "student_academic_id") === 0) {
                            $query2 .= "academicIDNumber='" . addslashes($a_post_arg) . "', ";
                        } else {
                            $query2 .= substr($the_key, 8) . "='" . addslashes($a_post_arg) . "', ";
                        }
                    }
                }
            }

            $query2 .= "status='registered' WHERE email='" . $_POST['student_email'] . "';";
这是$query2的回声。表的主键是自动递增字段id电子邮件字段

query 2 = UPDATE student SET name='Όνομα', surname='Επώνυμο', dob='1970-09-09',
fathers_name='Ονοματεπώνυμο πατέρα', mother_name='Ονοματεπώνυμο μητέρας',
nationality='Υπηκοότητα', adt='Α.Δ.Τ.', password='0cc175b9c0f1b6a831c399e269772661',
dept='biology', id='Αριθμός μητρώου', studying_semester='6', registration_year='2001-00-00',
atlas_id='1234', academicIDNumber='123456789012', perm_address_road='Οδός', 
perm_address_number='Αριθμός', perm_address_area='Περιοχή/Πόλη', perm_address_PObox='Τ.Κ.', 
perm_address_Country='Χώρα', study_address_road='Οδός', study_address_number='Αριθμός', 
study_address_area='Περιοχή/Πόλη', study_address_PObox='Τ.Κ.', study_address_Country='Χώρα', 
telephone='+305555555555', cellphone='+305555555555', fax='+305555555555', afm='Α.Φ.Μ.', 
eforia='Δ.Ο.Υ.', amka='Α.Μ.Κ.Α.', amika='Α.Μ.ΙΚΑ', status='registered' WHERE email='20@send.com';

该语句本身不可能发生这种情况,应用程序中必须有更多的查询。实际的查询是什么样子的?此表上有更新前的
触发器吗?@BillKarwin当然知道除非指定,否则不应该更新PK,但仍在查找表的DDL。仍然不知道哪个字段是PK——它可能是
academicIDNumber
?只有OP可以让我们知道。@Arch,或者在所有变量组合到其中后,至少
echo$query2