注册表单上的MySQL错误

时间:2017-08-18 08:07:15

标签: php mysql database joomla phpmyadmin

我目前正在使用joomla创建一个网站(使用模板大型交易II),每当我测试注册时,我都会遇到两个错误之一。

一个:警告

注册失败:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第3行的“2)”附近使用正确的语法

当我的users表中的id列不是主键时会发生这种情况,因此它会创建一个db为0的id条目。注册表格确实通过,我可以看到该表格已添加到表格中;但是,无论我添加多少帐户,ID始终为0。

两个:警告

从数据库获取用户时出错:键'PRIMARY'重复输入'0'

当我将id设置为主键并让它自动递增时,会发生这种情况。我做了很多测试,并且玩了表中的值,在我看来,由于某种原因,注册表单首先将信息发送到id设置为0的数据库(因为id的默认值为none),然后错误进来,然后它在表内自动递增。我这样说是因为我能够在此特定错误保持重新启动之前添加1个用户,所以看起来第一个用户同时占用了默认ID和当前自动增量ID?这甚至可能吗?

两者都设置为INT(11),但是当我使用id作为主键时,id的最大值是id的当前增量,通常是700s左右。

在解决此问题时,我们将不胜感激。

这是我的数据库结构的图片。

https://i.stack.imgur.com/txT9E.png

这些是我尝试过的stackoverflow的所有其他可能的解决方案:

MySQL PHPMyAdmin Error #1062 - Duplicate entry '0' for key 'PRIMARY'

phpMyAdmin #1062 - Duplicate entry '' for key 'PRIMARY'

MySQL 1062 - Duplicate entry '0' for key 'PRIMARY'

Error: Duplicate entry '0' for key 'PRIMARY'

#1062 - Duplicate entry '0' for key 'PRIMARY'

phpmyadmin error "#1062 - Duplicate entry '1' for key 1"

phpMyAdmin: MySQL Error 1062 - Duplicate entry

#1062 - Duplicate entry 0' for key 'PRIMARY'

以下是巨型交易II模板中注册目录的代码

来自default.php

<?php
/**
 * @package     Joomla.Site
 * @subpackage  com_users
 *
 * @copyright   Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidation');
?>
<div class="row">
    <div class="col-sm-4 col-sm-offset-4">
        <div class="registration<?php echo $this->pageclass_sfx?>">
            <?php if ($this->params->get('show_page_heading')) : ?>
                <h1><?php echo $this->escape($this->params->get('page_heading')); ?></h1>
            <?php endif; ?>

            <form id="member-registration" action="<?php echo JRoute::_('index.php?option=com_users&task=registration.register'); ?>" method="post" class="form-validate" enctype="multipart/form-data">

                <?php foreach ($this->form->getFieldsets() as $fieldset): // Iterate through the form fieldsets and display each one.?>
                    <?php $fields = $this->form->getFieldset($fieldset->name);?>
                    <?php if (count($fields)):?>
                        <?php foreach ($fields as $field) :// Iterate through the fields in the set and display them.?>
                            <?php if ($field->hidden):// If the field is hidden, just display the input.?>
                                <?php echo $field->input;?>
                            <?php else:?>
                                <div class="form-group">
                                    <?php echo $field->label; ?>
                                    <?php if (!$field->required && $field->type != 'Spacer') : ?>
                                        <span class="optional"><?php echo JText::_('COM_USERS_OPTIONAL');?></span>
                                    <?php endif; ?>

                                    <div class="group-control">
                                        <?php echo $field->input;?>
                                    </div>
                                </div>
                            <?php endif;?>
                        <?php endforeach;?>
                    <?php endif;?>
                <?php endforeach;?>

                <div class="form-group">
                    <button type="submit" class="btn btn-primary validate"><?php echo JText::_('JREGISTER');?></button>
                    <a class="btn btn-danger" href="<?php echo JRoute::_('');?>" title="<?php echo JText::_('JCANCEL');?>"><?php echo JText::_('JCANCEL');?></a>
                    <input type="hidden" name="option" value="com_users" />
                    <input type="hidden" name="task" value="registration.register" />
                </div>
                <?php echo JHtml::_('form.token');?>
            </form>
        </div>
    </div>
</div>

来自complete.php

<?php
/**
 * @package     Joomla.Site
 * @subpackage  com_users
 *
 * @copyright   Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;
?>
<div class="registration-complete<?php echo $this->pageclass_sfx;?>">
    <?php if ($this->params->get('show_page_heading')) : ?>
    <h1>
        <?php echo $this->escape($this->params->get('page_heading')); ?>
    </h1>
    <?php endif; ?>
</div>

0 个答案:

没有答案