foreach循环内部的查询不起作用

时间:2015-04-21 07:08:00

标签: php

为什么我的查询不起作用?

<?php
     $str = 'test1:val1,test2:val2,test3:val3'
     $ex1 = explode(',',$str);
     while(list($key,$val) = each($ex1)){
        $dat = explode(':',$val);
        $qry = mysqli_query("INSERT INTO table SET field1 = '".$dat[0]."', field2 = '".$dat[1]."'");
    }
    if($qry){
       echo 'success';
    }else{
       die(mysqli_error($con));
    }
?>

如果我尝试回显$dat[0]$dat[1],输出就可以了,但我的查询无效?

3 个答案:

答案 0 :(得分:2)

如果您的数据库在同一个数据库中被称为allotbl,那么您的INSERT应如下所示:

mysqli_query($con,"INSERT INTO allotbl SET field1 = '".$dat[0]."', field2 = '".$dat[1]."'");

其中$con是您定义的数据库连接,例如:

$con=mysqli_connect("localhost","my_user","my_password","my_db");

您还应该将if else语句放入循环中以检查查询。所以整个脚本看起来像这样:

<?php
$con=mysqli_connect("localhost","my_user","my_password","my_db");
$str = 'test1:val1,test2:val2,test3:val3'
$ex1 = explode(',',$str);
while(list($key,$val) = each($ex1)){
        $dat = explode(':',$val);
        $qry = mysqli_query($con,"INSERT INTO allotbl SET field1 = '".$dat[0]."', field2 = '".$dat[1]."'");
    if($qry){
      echo 'success';
    }else{
      die(mysqli_error($con));
    }
}

?>

答案 1 :(得分:1)

如果您有正确的数据库连接,可能会有3种类型的问题 mysql_connect和mysql_select_db。

没有mysql_connect和mysql_select_db,您无法对任何表执行任何查询。

Ist:之后你没有使用分号 $ str ='test1:val1,test2:val2,test3:val3'

IInd:如果你想检查if($ qry){}条件。你应该在条件循环中实现它。

IIIrd:你检查你是否达到了条件 与

<?php
$str = 'test1:val1,test2:val2,test3:val3';
$ex1 = explode(',',$str);
while(list($key,$val) = each($ex1)){
        $dat = explode(':',$val);
        echo "INSERT INTO table SET field1 = '".$dat[0]."', field2 = '".$dat[1]."'"."<br>";
}
if($qry){
  echo 'success';
}else{
  die(mysqli_error($con));
}
?>

答案 2 :(得分:1)

它不起作用的一个问题是因为函数mysqli_query(程序接口)需要第一个参数作为连接对象:

mysqli_query($connection_object, 'THEN THE QUERY');

现在查看你的代码,它没有代码,你需要把它放在那里:

$connect = mysqli_connect('localhost', 'username', 'password', 'database name');
$str = 'test1:val1,test2:val2,test3:val3';
$ex1 = explode(',',$str);
while(list($key, $val) = each($ex1)){

    list($k, $v) = explode(':', $val);
    $query = mysqli_query($connect, "INSERT INTO `table` SET `field1` = '{$k}', `field2` = '{$v}'") or die($connect->error);
}

旁注:

和往常一样,在编码时,不要在黑暗中调试(或死机的白屏),总是打开错误报告:

error_reporting(E_ALL); // put me on top of PHP file
ini_set('display_errors', '1');