【问题标题】:sql query with left join in php don't workphp中带有左连接的sql查询不起作用
【发布时间】:2014-01-20 08:44:22
【问题描述】:

我在我的数据库中做了一个 SQL 查询,它运行良好,但是当我尝试将这个相同的查询放入 PHP 时,它不起作用。我不知道错误在哪里。

//connection variables
$host = "localhost";
$database = "kjnjkyeo3";
$user = "root";
$pass = "probajovo11";

//connection to the database
$connection = mysql_connect($host, $user, $pass, $database)
or die ('cannot connect to the database: ' . mysql_error());


$sql = "SELECT ps_orders.id_order, ps_order_detail.id_order, ps_order_detail.product_reference AS Itemno,  ps_order_detail.product_quantity AS Saleqty, ROUND(ps_order_detail.total_price_tax_incl, 2) AS Cost, DATE_FORMAT(ps_orders.date_add , \'%Y%m%dT%T\' ) AS Dateoftrans\n"
    . "FROM ps_orders\n"
    . "LEFT JOIN kjnjkyeo3.ps_order_detail ON ps_orders.id_order = ps_order_detail.id_order";

//loop to show all the tables and fields
$loop = mysql_query($sql)
or die ('cannot select tables');

我在查询中做了很多更改,但我总是收到消息cannot select tables。当我进行像Select tables from $database 这样的简单查询时,它工作正常。


我做了更改:

//connection variables
$host = "localhost";
$database = "kjnjkyeo3";
$user = "root";
$pass = "probajovo11";

//connection to the database
$connection = mysql_connect($host, $user, $pass)
or die ('cannot connect to the database: ' . mysql_error());

//select the database
mysql_select_db($database)
or die ('cannot select database: ' . mysql_error());

$sql = "SELECT ps_orders.id_order, ps_order_detail.id_order, ps_order_detail.product_reference AS Itemno,  ps_order_detail.product_quantity AS Saleqty, ROUND(ps_order_detail.total_price_tax_incl, 2) AS Cost, DATE_FORMAT(ps_orders.date_add , \'%Y%m%dT%T\' ) AS Dateoftrans FROM ps_orders LEFT JOIN ps_order_detail ON ps_orders.id_order = ps_order_detail.id_order";

//loop to show all the tables and fields
$loop = mysql_query($sql)
or die ('cannot select tables');

但是还是不行

【问题讨论】:

  • 查询中的“\n”是什么?
  • 我直接在 mysql 数据库中进行了这个查询,我在数据库中生成了带有选项的 sql 语句,他把 \n.
  • 你确定数据库是他吗?想想看,可能是她:P
  • :),我不是以英语为母语的人

标签: php mysql sql


【解决方案1】:
$connection = mysql_connect($host, $user, $pass) or die ('cannot connect to the database: ' . mysql_error());
mysql_select_db($database);
$sql = "SELECT ps_orders.id_order, ps_order_detail.id_order,
 ps_order_detail.product_reference AS Itemno,  ps_order_detail.product_quantity AS Saleqty, ROUND(ps_order_detail.total_price_tax_incl, 2) AS Cost, DATE_FORMAT(ps_orders.date_add , \'%Y%m%dT%T\' ) AS Dateoftrans FROM ps_orders LEFT JOIN kjnjkyeo3.ps_order_detail ON ps_orders.id_order = ps_order_detail.id_order";

【讨论】:

    【解决方案2】:

    mysql_connect 不允许您像现在这样选择数据库。你必须使用mysql_select_db,而且有一天你还必须最终转移到mysqliPDO

    $connection = mysql_connect($host, $user, $pass) or die ('cannot connect to the database: ' . mysql_error());
    mysql_select_db($database);
    

    【讨论】:

      【解决方案3】:

      mysql_connect 不采用 $database 参数。 http://dk1.php.net/manual/en/function.mysql-connect.php,改为使用:

      $connection = mysql_connect($host, $user, $pass)
      mysql_select_db($database, $connection)
      

      【讨论】:

        【解决方案4】:

        使用mysql_select_db($database) 来判断查询将在哪些数据库上运行。

        如果您从多个数据库中进行选择,您可以使用这种引用字段的方式

        `database_name`.`table_name`.`field_name`
        

        或者只是

        `database_name`.`table_name` 
        

        对于 FROM 中的表。

        mysql_* 函数已弃用,如果您正在开始一个新项目,请使用 mysqli 或 pdo

        【讨论】:

          猜你喜欢
          • 2016-05-16
          • 1970-01-01
          • 2017-08-17
          • 1970-01-01
          • 1970-01-01
          • 2015-10-13
          • 2012-04-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多