phpforkey
‘壹’ php mysql plicate entry ‘123’ for key 1 如何解决
应该是你的主键没有自动增长。到插入的数据重复!
‘贰’ Php mysql plicate entry ‘123’ for key 1 如何解决
没法设置自动增长啊。。。回答: 用VARCHAR做主键,需要自己手工检测插入到主键的数据是不是有重复的,对应你的newsid 数据库检测到重复的主键就会报错,要么取消newsid的主键功能,要么改成int(10),要么插入数据的时候先检测是否有重复,然后执行插入。追问: newsid我需要一些英文,所以只能射程VARCHAR,,你能告诉我一段检测代码吗。最好是PHP的详细的。。这个问题貌似很麻烦的哦。 。回答: 你要插入的值$newsid="the time"检测$sql="select newsid from 表 where newsid="'.$newsid.'"" 执行sql,$db-query($sql) 返回true的话表示这个$newsid的值已经存在了 如果返回false 执行你的SQL insert into news (newsID,newsAuthorID) values ('$id','$newsAuthorID')追问: 你这麼查的啊。。是个方法。。我现在用的就是这个,, 那个plicate entry ‘123’ for key 1的错误会不会影响数据库啊。。 不会影响数据库,只是主键上有重复的数据 比如你有一个数据库类 $db-execsql($sql);就是调用$db类的execsql方法,$sql是方法的参数追问:
‘叁’ THINKPHP foreach key值
加上<if condition="$key eq 1">A方案<else/>B方案</if>
‘肆’ PHP程序for($key='A';$key<='Z';$key++)这个循环为什么不行,最后key为什么变成'AA'了
你用的是MYSQL 数据库吧?
1:提示信息翻译:插入 xxx 使索引1重复
分析:索引如果是primary unique这两两种,那么数据表的数据对应的这个字段就必须保证其每条记录的唯一性。否则就会产生这个错误。
一般发生在对数据库写操作的时候,例如Discuz!4.1论坛程序要求所有会员的用户名username必须唯一,即username 的索引是unique,这时如果强行往cdb_members表里插入一个已有的username的记录就会发上这个错误,或者将一条记录的username更新为已有的一个username。
改变表结构的时候也有可能导致这个错误。例如 Discuz!4.0论坛的数据库中cdb_members.username 的索引类型是 index 这个时候是允许有相同username的记录存在的,在升级到4.1的时候,因为要将username的索引由原来的index变为unique。如果这时cdb_members里存在有相同的username的记录,那么就会引发这个错误。
导出数据据时有时会因为一些原因(作者目前还不清楚)导致同一条记录被重复导出,那么这个备份数据在导入的时候出现这个错误是在所难免的了。
修改了auto_increment的值,致使“下一个 Autoindex”为一条已经存在的记录
2:可能是你的数据表中像 ID 这样的自增字段AUTO_INCREMENT出现了问题,使用AUTO_INCREMENT时,应注意以下几点:
AUTO_INCREMENT是数据列的一种属性,只适用于整数类型数据列。
设置AUTO_INCREMENT属性的数据列应该是一个正数序列,所以应该把该数据列声明为UNSIGNED,这样序列的编号个可增加一倍。
AUTO_INCREMENT数据列必须有唯一索引,以避免序号重复。
AUTO_INCREMENT数据列必须具备NOT NULL属性。
AUTO_INCREMENT数据列序号的最大值受该列的数据类型约束,如TINYINT数据列的最大编号是127,如加上UNSIGNED,则最大为255。一旦达到上限,AUTO_INCREMENT就会失效。
3:根据以上信息你没有解决的话,请继续操作:
有可能是因为数据表文件损害导致,可用MySQL的修复工具myisamchk 工具修复。
在CMD下面输入:
myisamchk cdb_posts.myi -r
修复数据表就OK了!
‘伍’ php中 foreach 中key值的问题,那位高手知道呀
你想知道什么,我举个简单的例子吧
$a = array(0=>'aaa',1=>'bbbb');
foreach($a as $key=>$val){
echo $key.'====>'.$val.'<br/>';
}
输出的结果就是
0====>aaa
1====>bbbb
看明白了么
‘陆’ 写php的时候执行 update语句更新 可是出现错误了 Duplicate entry="1" for key 'Primary' 求帮助啊 晕了
如果你是用oracle数据库,而且用了触发器的话,不知道你的触发器是怎么写得,如果触发器限制了你是不能改主键的!
‘柒’ php中为什么多个foreach循环中获取不到上一个foreach循环的key值
能获取到的,应该是你的代码写错了,或者命名不规范:
<?php
$variable = array('0' => array('a' =>array('x' => array('0' => 4,'1'=>5 ),'y' =>array('0' => 1,'1'=>3 )) ,'b' =>array('s' => 7,'g' =>9)),'1'=>array('a' =>array('x' => array('0' => 8,'1'=>6 ),'y' =>array('0' => 4,'1'=>4 )) ,'b' =>array('s' => 10,'g' =>11)) );
foreach ($variable as $key => $value) {
foreach ($value as $k => $v) {
foreach ($v as $ke => $va) {
echo $key;
echo $k;
echo $ke;
exit;
}
}
}
这个都是可以输出对应的键的,不知道是我理解错误?
‘捌’ 请问php中foreach循环中,如何修改$key值
这个$key跟for循环中的$key是两个概念了
比如:
$arr=['k1'=>'v1','k2'=>'v2','k3'=>'v3'];
//取v2的值
print_r($arr['k2']);
$arr=['v1','v2','v3'];
//取v2的值
print_r($arr[1]);
//上面两个数组中,分别得到v2这个值所用的方法,有什么不同?
用foreach循环,可以得到数组中元素的key值跟value值,当然key值可以是数字,也可以是字符串啊
如果你想下一次循环,直接到$key=$key+10的时候,首先,如果$key是字符串,+10就会有错误
你可以:
1.循环一次,将用过的元素通过php函数array_splice()或unset()删除,剩下的可以再次循环
2.新建一个数组变量,用来你的操作
你指的控制key值是什么意思?不太明白
‘玖’ php中为什么多个foreach循环中获取不到上一个foreach循环的key值
可以取到的,只要命名不同就可以,例子如下:
$array=array(
'a'=>array('a1'=>1,'a2'=>2),
'b'=>array('b1'=>3,'b2'=>4)
);
foreach($arrayas$key=>$value){
foreach($valueas$k=>$v){
echo"$array[{$key}][{$k}]={$v}<br>";
}
}
输出结果是:
$array[a][a1] = 1
$array[a][a2] = 2
$array[b][b1] = 3
$array[b][b2] = 4
‘拾’ php for 循环怎样将两个变量组合输出
把$a1~$a5放到数组里才能循环吧,数组的下标和值存两组数据
<?php
$i=5;
$a=
array();
$a[1]=3;
$a[2]=4;
$a[3]=5;
$a[4]=6;
$a[5]=7;
for($n=1;
$n<=$i;
$n++){
echo
$a[$i];
}
/*或者foreach循环
$a=
array();
$a["a1"]=3;
$a["a2"]=4;
$a["a3"]=5;
$a["a4"]=6;
$a["a5"]=7;
foreach($a
as
$key=>$value){//$key就是下标,$val是值
echo
"$key的值为$value";
}
*/
?>