我正在尝试使用php在SQL Server中显示行
建立连接并运行查询后得到的响应是SQL Server connection类型的resource4我正在尝试使用php在SQL Server中显示行,php,sql-server,sql-server-2012,sqlsrv,Php,Sql Server,Sql Server 2012,Sqlsrv,建立连接并运行查询后得到的响应是SQL Server connection类型的resource4 <?php $serverName = "xx.xx.xx.xx"; $uid = "sa"; $pwd = "xxxxxxxxxx"; $databaseName = "courierdb"; $connectionInfo = array( "UID"=>$uid,
<?php
$serverName = "xx.xx.xx.xx";
$uid = "sa";
$pwd = "xxxxxxxxxx";
$databaseName = "courierdb";
$connectionInfo = array( "UID"=>$uid,
"PWD"=>$pwd,
"Database"=>$databaseName);
/* Connect using SQL Server Authentication. */
$conn = sqlsrv_connect( $serverName, $connectionInfo);
var_dump($conn);
/* Execute the query. */
$sql = "SELECT * FROM dbo.AwbDomestics";
$stmt = sqlsrv_query( $conn, $sql);
if( $conn === false ) {
die( print_r( sqlsrv_errors(), true));
}
while ($row = sqlsrv_fetch_array($stmt,SQLSRV_FETCH_ASSOC))
{
if (sqlsrv_has_rows($stmt)) {
echo "row:<br>"; var_dump($row); echo "<br><br>";
}
else {
echo "<br/>No Results were found.";
}
}
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>
如果没有此SQL Server连接类型的resource4,如何选择数据库中的所有行。非常感谢您的帮助 您可以尝试使用此脚本。没有必要使用sqlsrv_has_行。使用或/来检索数据
<?php
/* Warnings */
sqlsrv_configure("WarningsReturnAsErrors", 1);
/* Connection */
$serverName = "xx.xx.xx.xx";
$uid = "sa";
$pwd = "xxxxxxxxxx";
$databaseName = "courierdb";
$connectionInfo = array(
"UID" => $uid,
"PWD" => $pwd,
"Database" => $databaseName
);
$conn = sqlsrv_connect(
$serverName,
$connectionInfo
);
if ($conn === false) {
die(print_r(sqlsrv_errors(), true));
}
/* Execute the query with sqlsrv_fetch_array(). */
$sql = "SELECT * FROM dbo.AwbDomestics";
$stmt = sqlsrv_query($conn, $sql);
if ($stmt === false) {
die(print_r(sqlsrv_errors(), true));
}
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
//print_r($row, true);
foreach($row as $field => $value) {
echo $field.": ".$value." ";
}
echo "\n";
}
/* Execute the query with sqlsrv_fetch()/sqlsrv_get_field(). */
$sql = "SELECT * FROM dbo.AwbDomestics";
$stmt = sqlsrv_query($conn, $sql);
if ($stmt === false) {
die(print_r(sqlsrv_errors(), true));
}
$fc = sqlsrv_num_fields($stmt);
while (sqlsrv_fetch($stmt)) {
for($i = 0; $i < $fc; $i++) {
echo sqlsrv_get_field($stmt, $i, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR))." ";
}
echo "\n";
}
/* End */
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>
if sqlsrv_has_rows$stmt测试应该在循环周围,而不是在循环内部
if (sqlsrv_has_rows($stmt)) {
while ($row = sqlsrv_fetch_array($stmt,SQLSRV_FETCH_ASSOC))
{
echo "row:<br>"; var_dump($row); echo "<br><br>";
}
else {
echo "<br/>No Results were found.";
}
}
到
我仍然得到SQL Server Connection类型的resource4,这是var_dump$conn的预期输出;为什么您认为这是一个问题?我没有从查询返回任何行。我认为这个查询在某个地方失败了,我似乎找不到它。我倒了$row什么也没得到。但是当我var_dump$stmt时,它返回一个资源。表一直都是空行。我不知道这张桌子被截断了。感谢您的帮助,我仍然可以获得SQL Server类型的resource4Connection@JonathanAkweteyOkine是,sqlsrv_connect和sqlsrv_query返回资源或错误时返回false。sqlsrv_fetch_数组返回一个数组,如果没有更多的行可检索,则返回null,错误时返回false。sqlsrv_fetch_数组没有返回任何内容,并且表中有行。当i var_dump$row;没有显示任何内容。奇怪。while之前是否有任何输出?当我var_dump$stmt resource3的类型为SQL Server语句无输出时,我得到了这个结果。
if ($conn == false)
if (!$stmt)