2个数据库查询并从行

时间:2018-10-21 06:13:06

标签: php sql

第二个查询有问题。当它到达mysql_fetch_row时-它反冲

  

mysqli_fetch_row()期望参数1为资源,给定布尔值

现在我也尝试过获取assoc。但这也可以消除错误。我尝试用'$ id'进行第二次查询,没有它,却什么也没有。我想我遗漏了一些非常明显的东西。

我在这里浏览了很多常见的帖子,它们都提到了我给出的错误,但仍然没有找到解决方法。

$con1 = mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);
$con2 = mysqli_connect($dbhost,$dbuser2,$dbpass2,$dbname2);

// Check connections
if($con1)
    { echo("1st Connection Successful "); }
else
    { echo("1st Connection Failed "); }
if($con2)
    { echo("2nd Connection Successful "); }
else
    { echo("2nd Connection Failed "); }

//start first database query
$query = "SELECT id, email FROM ow_base_user ORDER by ID LIMIT 30";
$result = $con1->query($query);

while($row = $result->fetch_row()) {
  $rows[]=$row;

  $id = $row[0];
  $email_row = $row[1];

  $email_sub = substr($email_row, 0, 2);

  if ( $email_sub == "dk" ) {
    $email = "1"; }
  elseif ( $email_sub == "sv" ) {
    $email = "3"; }
  elseif ( $email_sub == "no" ) {
    $email = "4"; }
  elseif ( $email_sub == "nl" ) {
    $email = "5"; }
  elseif ( $email_sub == "de" ) {
    $email = "2";  }
  elseif ( $email_sub == "fi" ) {
    $email = "6"; }
  else {}

     if (isset($email)) {       
            //start 2nd database query
            $query2 = "SELECT country_id FROM website_user WHERE userId = $id LIMIT 1";
            $result2 = $con2->query($query2);

            $row2 = mysqli_fetch_row($result2);
            $country = $row2[6];

            if (isset($country)) {

    }

    if (DEVMODE) {
        echo "user id = ".$id." -- ";
        echo "email = ".$email." -- ";
        echo "COUNTRY = ".$country."<br />";
    }


    }
}

因此,对代码进行了一些更改,以打印出错误,以防查询失败。

        If($result2 === false) {
              echo "error while executing mysql: " . mysqli_error($con2);
        } else {

在添加此内容后,我收到了错误。

  

mysqli_error()期望参数1为mysqli,给定为空

好吧,这些错误是由数据库表名称中的错字引起的,感谢您指出错误报告中所有方法的注释。

更新:因此在解决了连接问题之后。我收到通知:未定义的偏移量:$ country中的5 = $ row2 [6];

更新:更改后$ country = $ row2 [0]; -这解决了最后一个问题。

1 个答案:

答案 0 :(得分:0)

您可以使用开发版本

  

error_reporting(E_ALL);
  ini_set('display_errors',1);

表示数据库表拼写错误。之后,由于只有1行而不是所有行,因此必须更改要拉的是哪一行。

相关问题