Php 注册表上的MySQL错误
我目前正在使用joomla(带有模板mega deals II)创建一个网站,每当我测试注册时,都会出现两个错误之一 一个:警告 注册失败:您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解第3行“2”附近使用的正确语法 当“我的用户”表中的“我的id”列不是主键时,会发生这种情况,因此它会创建一个id为0的db条目。注册表确实会通过,我可以看到该帐户已添加到表中;但是,无论我添加了多少帐户,id始终为0 两个:警告Php 注册表上的MySQL错误,php,mysql,database,joomla,phpmyadmin,Php,Mysql,Database,Joomla,Phpmyadmin,我目前正在使用joomla(带有模板mega deals II)创建一个网站,每当我测试注册时,都会出现两个错误之一 一个:警告 注册失败:您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解第3行“2”附近使用的正确语法 当“我的用户”表中的“我的id”列不是主键时,会发生这种情况,因此它会创建一个id为0的db条目。注册表确实会通过,我可以看到该帐户已添加到表中;但是,无论我添加了多少帐户,id始终为0 两个:警告 从数据库获取用户时出错:键“PRIMARY”的重复条目“0” 当
从数据库获取用户时出错:键“PRIMARY”的重复条目“0” 当我将id设置为主键并让它自动递增时,就会发生这种情况。我做了很多测试,并处理了表中的值。在我看来,出于某种原因,注册表先将id设置为0(因为id的默认值为none)的信息发送到数据库,然后出现错误,然后在表中自动递增。我这样说是因为我可以在这个特定错误再次发生之前添加1个用户,所以第一个用户似乎同时使用默认id和当前自动增量id?这可能吗 两者都设置为INT(11),但当我使用id作为主键时,id的最大值是id的当前增量,通常是700s左右 如果您能帮助解决这个问题,我们将不胜感激 这是我的数据库结构的图片 以下是我尝试过的stackoverflow的所有其他可能解决方案: 以下是mega deals 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>
一个好的开始是发布您使用的代码,这会产生错误。不确定这是否是正确的代码,因为我使用的是CMS,但这是在默认的注册目录下。php:也在目录complete中。php:发布您的实际代码,而不是图片。这将更容易让人调试。没有人希望通过pictureedited post尝试为键“PRIMARY”添加codeDuplicate条目“0”必须是插入错误,而不是查询。获取用户时如何获取它?一个好的开始是发布您使用的代码,这会产生错误。不确定这是否是正确的代码,因为我使用的是CMS,但它在默认情况下位于注册目录下。php:也在目录complete中。php:发布您的实际代码,而不是图片。这将使人们更容易理解调试。没有人希望通过pictureedited post尝试为键“PRIMARY”添加codeDuplicate条目“0”必须是插入错误,而不是查询。在获取用户信息时,如何获取该信息?
<?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>