【问题标题】:PHP and SQL Select StatementsPHP 和 SQL 选择语句
【发布时间】:2015-06-01 15:27:29
【问题描述】:

我正在学习 PHP,但似乎找不到可以进入工作 sql 选择的指令。我只是想学习基础知识。我有一个带有文本框和提交按钮的基本 php 页面。我真的只是使用按钮来执行我正在尝试的简单查询。似乎什么都没有发生,而且我在网上找到的每一个资源似乎都不能说明整个故事(或者我只是错过了一些)。

这是我在测试页面中的内容。谁能告诉我我做错了什么?谢谢:-)

<?php
    $serverName = "some-sqlserver";
    $connectionOptions = array("Database"=>"123MyDatabase");
    /* Connect using Windows Authentication. */
    $conn = mssql_connect( $serverName, $connectionOptions);
    if( $conn ) {
        echo "Connection established.<br />";
    }else{
        echo "Connection could not be established.<br />";
        die( print_r( mssql_errors(), true));
    }
    $tsql = "SELECT [Col1]
    FROM [123MyDatabase].[dbo].[vw_somesqlview]";
    //WHERE soemcolumn LIKE '%' + ? + '%'";
    //$params = array( $_REQUEST['col1'] );
    $getCol1 = sqlsrv_query( $conn, $tsql);
    if ( $getCol1 != null){ 
        //die( FormatErrors( mssql_errors()))
        echo "<h2>Results:</h2>";
        echo $getCol1 ;
        echo "<br>";
    } else {
        echo "couldnt do it";
    }

?>

【问题讨论】:

  • 在查询中也添加错误检查或检查错误日志。
  • 如果你正在学习,最好远离mysql_*,它出于良好的安全原因已被弃用,并将从 php 7 中删除。尝试使用 PDO 和准备好的语句学习。查一下,很多例子。
  • @JayBlanchard 似乎他们在混合 API Sam - sqlsrv_query 应该是 mssql_query。至少,看起来就是这样。
  • 无论他们使用什么 API,他们都应该需要通过例如获取行*_fetch_array().
  • @YvesLeBorg OP 没有使用 MySQL。 OP 使用 MS SQL Server

标签: php sql sql-server select


【解决方案1】:

首先,您需要使用sqlsrv_connect 而不是mssql_connect。永远不要混搭你的函数族

$conn = sqlsrv_connect( $serverName, $connectionInfo);

接下来,您需要使用 sqlsrv_fetch_object 之类的内容解析查询结果

while( $obj = sqlsrv_fetch_object($getCol1)) {
  echo $obj->Col1;
}

【讨论】:

  • 洛迪;这个可以摆动任何一种方式。
  • 是的。我刚选了一个就跑了。两者似乎都没有被弃用。绝对不能混搭哦
  • 是的。 --- “我刚选了一个就跑了。” - 我只想“跑” ;-) 哈哈
  • 感谢您的回答!我试过这个,但它似乎没有做任何事情。无论我放什么,当我点击提交时,我什么也得不到。我可以得到虚拟场的回声(最终用于参数)。但没有来自 sql 查询。
  • 在查询之后试试这个然后var_dump(sqlsrv_errors());
【解决方案2】:

考虑使用带有 PDO 的标准 Windows ODBC Driver,它通常在安装 SQL Server 时配备。

<?php

$server="some-sqlserver";
$username="some-user";
$password="some-password";
$database="123MyDatabase";

# open the connection
try {
    $dbh = new PDO("odbc:Driver={SQL Server};Server=$server;
                     database=$database",$username,$password);
    $sql = "SELECT * FROM dbo.vw_somesqlview";    
    $STH = $dbh->query($sql);

    $STH->setFetchMode(PDO::FETCH_ASSOC); 
}
catch(PDOException $e) {  
    echo $e->getMessage()."\n";
    exit;
}

while($row = $STH->fetch()) {
    echo $row;
}

# close the connection
$dbh = null;

?>

【讨论】:

    【解决方案3】:

    您尚未指定数据库密码。请点击下面的文章链接,这对您有帮助。

    http://php.net/manual/en/function.mysql-connect.php

    https://www.w3schools.com/php/php_mysql_select.asp

    【讨论】:

      猜你喜欢
      • 2011-06-09
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      • 2017-08-22
      相关资源
      最近更新 更多