【问题标题】:INSERT only first row and ignore New entries仅插入第一行并忽略新条目
【发布时间】:2017-11-20 21:29:40
【问题描述】:

我为制药产品制作了一个表格,用户选择制造商名称并写下项目的详细信息。除了这个问题,一切都正常运行。已经好几个小时了,我想不通。

问题是它只选择第一行并忽略新条目。我想要的是它将选择每一行或每个新条目并插入到第二个数据库中,代码工作没有错误,但只更新第一行。

 //Select Everything from database
$perm = "SELECT * FROM test";
$result34 = mysqli_query($dbc, $perm);

if ($perm) {
  //How many rows
  $count = mysqli_num_rows($result34);

  //Retrieve data

  if($count>=1) {

    $rows = mysqli_fetch_array($result34);
    $namex= $rows['name'];
    $categoryx = $rows['category'];

    //takeout the spaces and strip tags

    $namey = strip_tags($namex);
    $category = str_replace(' ', '', $category);


    //INSERT INTO TABLES

    $sql34 = "INSERT INTO final1 (Name, Category) VALUES ($namey, $category);";
    $result55 = mysqli_query($dbc, $sql34);
      }
    }

使用准备好的语句:

$sql2 = "INSERT INTO final1 (Name, Category) VALUES (?, ?);";
    $stmt1 = mysqli_stmt_init($dbc);

    if (!mysqli_stmt_prepare($stmt1, $sql2)) {
      echo "SQL error";
    } else {
      mysqli_stmt_bind_param($stmt1, "ss", $namey, $category);
      mysqli_stmt_execute($stmt1);
    }

【问题讨论】:

  • 你应该循环调用mysqli_fetch_array。查看the manual中的用户注释
  • 您的意思是使用 while 循环 ..right .? 获取数组
  • 为什么不使用INSERT INTO final1 (Name, Category) SELECT name, category FROM test,让数据库处理副本。
  • 我不想只是将数据从一个表复制到另一个我想先验证数据然后将数据移动到第二个数据库。
  • 它可能会从您的表中选择所有记录,但由于您只调用 mysqli_fetch_array() 一次,因此您只会看到第一个结果。

标签: php mysql


【解决方案1】:

你需要while循环

//Select Everything from database
$perm = "SELECT * FROM test";
$result34 = mysqli_query($dbc, $perm);

if ($result34) {
  //How many rows
  $count = mysqli_num_rows($result34);

  //Retrieve data

  if($count>=1) {
    while($rows = mysqli_fetch_array($result34) ){
    $namex= $rows['name'];
    $categoryx = $rows['category'];
    //takeout the spaces and strip tags
    $namey = strip_tags($namex);
    $category = str_replace(' ', '', $category);
    //INSERT INTO TABLES
    $sql34 = "INSERT INTO final1 (Name, Category) VALUES ($namey, $category);";
    $result55 = mysqli_query($dbc, $sql34);
      }
    }
}
?>

【讨论】:

  • haha lol xD while 循环只需单击 1 次即可更新所有条目.. 意味着例如:我在数据库中有 10 个条目并提交一个新条目,即 11 它占用所有 11 个条目并插入所有11 一次,但感谢您的尝试..
  • 这是要走的路。如果您只想循环遍历新记录(即测试中的条目而不是 final1 中的条目),只需将您的查询更改为 select only those records 然后循环遍历它们..
  • 对不起。我们有地震。为此我回答晚了。((我希望这不是粗鲁))您可以更改查询以获得所需的结果。例如:-> $perm = "SELECT * FROM test WHERE id='$id' .....ect ";
猜你喜欢
  • 1970-01-01
  • 2019-03-11
  • 1970-01-01
  • 2010-10-23
  • 2016-07-29
  • 1970-01-01
  • 2013-10-31
  • 2015-10-22
  • 2014-02-19
相关资源
最近更新 更多