【问题标题】:Why i cannot set my db table with a code one by one in php?为什么我不能在php中一一设置我的数据库表?
【发布时间】:2017-04-13 12:32:56
【问题描述】:

大家好,我整个星期都在努力解决这个问题。我想用数组设置我的表“isim”列。但是机器人在所有行中都用 array[1] 填充了这一列。我想用数组的每个元素设置每一行,但它总是用相同的元素填充。这是相关代码:

for($a=0; $a<=29; $a++){
//echo ($dizi[1][$a]."<br />"); 
foreach (array($dizi[1][$a]) as $dizipub2){ 
$query = $db->prepare("UPDATE diziler SET diziisim=?");
$Insert = $query->execute(array("$dizipub2" 
 )); break;

if ($Insert){   
    $last_id = $db->lastInsertId();
echo ("Kaydedildi");break;}         
}  

我尝试在 echo 之前删除 // ,它的输出是什么。这是正确的。完美地赋予元素。我猜foreach有问题。我该怎么做?

【问题讨论】:

  • 这根本不是 SQL 语言的工作方式。你不能制定自己的命令并期望它们起作用。请开始阅读您使用的工具的文档! SQL 对数组一无所知。它仅适用于标量值。
  • 您的 foreach 正在创建一个 $dizi[1][$a] 数组,对吗?您应该使用 foreach($dizi[1][$a] as $dizipub2),但前提是 $diz[1][$a] 返回一个数组。此外,您在 foreach 中放置了一些中断,最后一个是无用的,中间的会阻止您的 if($insert) 测试运行
  • 了解 break 是无用的,谢谢。是的,它正在创建一个数组,它返回一个数组,一切正常,无需使用 db
  • @arkascha 我知道了,但每个人都这样说。还阅读了有关 sql 的文档,但它没有以我的方式解释有关将数组插入表的任何内容。我找不到其他任何东西,我自己也尝试了一些方法,遗憾的是它们不起作用:(你能举例说明吗?
  • 抱歉,您希望我补充什么?我说了所有要说的:SQL 不支持数组。期间。

标签: php arrays phpmyadmin dbo


【解决方案1】:

试试这个

for($a=0; $a<=29; $a++){
    //echo ($dizi[1][$a]."<br />");
    foreach (array($dizi[$a]) as $dizipub2){
        $query = $db->prepare("UPDATE diziler SET diziisim='$dizipub2'");
        $Insert = $query->execute();
        break;

        if ($Insert){
            $last_id = $db->lastInsertId();
            echo ("Kaydedildi");
            break;
        }
    }
}

【讨论】:

  • 直接在 SQL 字符串中插入变量不是一个好习惯。你应该使用参数
  • 而且如果我不使用 dizi[1][$a] 它不会给我任何东西,“[1]”在我的数组中是绝对的。顺便说一句,感谢您的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多