Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP连接到Sql server,但查询不';行不通_Php_Sql Server - Fatal编程技术网

PHP连接到Sql server,但查询不';行不通

PHP连接到Sql server,但查询不';行不通,php,sql-server,Php,Sql Server,如果我的问题有一个简单的答案,我很抱歉,但我对这一点还不熟悉,有点卡住了。。。 所以我应该为一个项目制作一个烹饪食谱网站,我使用的是PHP5.5.9和SQLServer2012。我按照视频教程创建了一个搜索框,其中应该列出从数据库检索到的结果。这是我的密码: <?php include ("dbconnect.php"); if (!isset($_POST['search'])) { header("Location:index.php"); } $search_sql=

如果我的问题有一个简单的答案,我很抱歉,但我对这一点还不熟悉,有点卡住了。。。 所以我应该为一个项目制作一个烹饪食谱网站,我使用的是PHP5.5.9和SQLServer2012。我按照视频教程创建了一个搜索框,其中应该列出从数据库检索到的结果。这是我的密码:

<?php
include ("dbconnect.php");

if (!isset($_POST['search']))    {
    header("Location:index.php");
}
$search_sql="SELECT * FROM Recipe WHERE name LIKE '%".$_POST['search']."%' OR description LIKE '%".$_POST['search']."%'";
$search_query=sqlsrv_query($conn, $search_sql);
if (sqlsrv_num_rows($search_query)!=0) {
    $search_rs=sqlsrv_fetch_assoc($search_query); }
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
</head>
<body>
<h3>Search results</h3>
<?php
if (sqlsrv_num_rows($search_query)!=0) {
    do { ?>
        <p><?php echo $search_rs['name']; ?></p>
    <?php }
    while ($search_rs=sqlsrv_fetch_assoc($search_query));
}
else {
    echo "No results found";
}
?>
</body>
</html>

无标题文件
搜索结果

下面是我的dbconnect.php:

<?php
$serverName = "USER\SQLEXPRESS"; //serverName\instanceName

// Since UID and PWD are not specified in the $connectionInfo array,
// The connection will be attempted using Windows Authentication.
$connectionInfo = array( "Database"=>"iCook project");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
    echo "Connection established.<br />";
}else{
    echo "Connection could not be established.<br />";
    die( print_r( sqlsrv_errors(), true));
}
?>

在安装了PHP5.5和SQL server的驱动程序之后,数据库确实成功地连接了。然而,即使我硬编码了这些值,查询也无法工作。我再也不会出错了,但一直都是“找不到结果”……值得一提的是,我遵循的教程使用的是MySQL,所以我在代码中将MySQL改为sqlsrv。此外,查询确实直接在SQL server中执行

我将非常感谢任何帮助

编辑: 好的,还是不走运,但我注意到了一些东西-PhpStorm说“未定义的函数sqlsrv_fetch_assoc。在内置库和项目文件中找不到引用函数的声明。”我试着用谷歌搜索了一下,但什么都没有出现。你对此有何看法? 另外,我使用的教程是…

更改

$search_sql="SELECT * FROM Recipe WHERE name ='%".$_POST['search']."%' OR description ='%".$_POST['search']."%'";


让我知道它是如何运行的。

这就是我如何为SQL Server构建我的
db_connect.php
可能是连接中的问题

<?php 
$server = "localhost"; // aka "localhost" or "192.168.10.110" 
$username = "user"; // aka "ChuckNorris" 
$password = "password"; // aka "cankickyourass" 
$database = "TestDB1"; // database you want to connect to 

$connectionOptions = array("Database" => $database, "UID" => $username, "PWD" => $password);

/* Connect using Windows Authentication. */
$conn = sqlsrv_connect($server, $connectionOptions);

if( $conn ) {
    // Connection Established!
} else {
    echo "Connection could not be established.<br />";
    die( print_r( sqlsrv_errors(), true));
}
?>
只需按如下所示更改“while”即可

while( $search_rs = sqlsrv_fetch_array( $search_query, SQLSRV_FETCH_ASSOC) );

你也可以点击链接,它会给你很多帮助。

我切换到MySQL,现在查询可以了。感谢所有试图帮助的人

你需要像“%”$somevariable那样写名称。“%”不是NAME=是的,我的错误,但不幸的是没有任何变化..最初代码是LIKE,没有返回结果,我只是尝试了=但忘了删除它..在文档顶部,你能添加错误报告(E_ALL)吗?可能会出现错误我把它放在第一个感谢中,我会检查它,但是“while”也不是那样工作的-没有错误,但是再次“没有找到结果”。我注意到phpStorm说SQLSRV_FETCH_ASSOC是一个未定义的常量,尽管…:/我无法像你一样连接:(可能是因为我没有密码,我不知道。。。
$sql = "SELECT *
        FROM Users
        WHERE UserName LIKE '%user%'";

// Execute query:
$result = sqlsrv_query($conn, $sql) or die('A error occured: ' . sqlsrv_errors());

if(!$result)
{
    echo 'There are no users. ' . sqlsrv_errors();
}
else
{
    while($row = sqlsrv_fetch_array($result))
    {   
        //use $row['column'] here
    }
}
while( $search_rs = sqlsrv_fetch_array( $search_query, SQLSRV_FETCH_ASSOC) );