我在使用PHP将数据放入MSSQL时出现问题 - 我收到此错误:
sqlsrv_query()要求参数1为资源,第13行的[path]中给出布尔值
我无法确定问题出在哪里,或者我是否有语法错误。
<?php
$host = "127.0.0.1";
$dbusername = "humid";
$dbpassword = "humid";
$db = "test";
$t = $_GET['t'];
$h = $_GET['h'];
$connectionInfo = array("UID" => $dbusername, "PWD" => $dbpassword, "Database" => $db) or die("Couldnt connect to server");
$dbconnect = sqlsrv_connect($host, $connectionInfo);
$sql = "INSERT INTO historic VALUES(NULL,$t,$h,CURRENT_TIMESTAMP)";
sqlsrv_query($dbconnect, $sql);
?>
非常感谢任何帮助!我不熟悉MSSQL,只熟悉MySQL
好的,现在我已经启用了错误消息,而且我现在已经有了这个消息:
数组([0] =&gt;数组([0] =&gt; 42000 [SQLSTATE] =&gt; 42000 [1] =&gt; 126 [代码] =&gt; 126 [2] =&gt; [微软] [用于SQL Server的ODBC驱动程序11] [SQL Server]无效的伪列&#34; $ t&#34;。[message] =&gt; [Microsoft] [用于SQL Server的ODBC驱动程序11] [SQL Server]无效的伪列&#34 ; $ t&#34;。))
但是,我不知道那可能是什么?是因为$ t是我不知道的SQL语法吗?简而言之,我正在从Arduino构建温度和湿度的日志设备,我需要它将值发布到数据库中(使用PHP) - PHP的语法如下所示:
test.php的T = 1&安培; H = 2
我现在做错了什么?在我的MySQL服务器私有测试时,一切正常&gt; _&lt;
- 编辑,找到解决方案! -
好的,我找到了解决方案,但我不确定是否有任何其他答案有直接修复。 MSSQL显然不接受&#34; NULL&#34;像MySQL一样。但这是有道理的。我编辑的最后一件事,所以我不确定以前的代码中是否有任何错误。但是,下面是最终(和工作)代码。 Arduino帖子和一切。尤里卡!
<?php
$host = "WDKTO560\TEST";
$dbusername = "humid";
$dbpassword = "humid";
$db = "test";
$t = $_GET['t'];
$h = $_GET['h'];
$connectionInfo = array("UID" => $dbusername, "PWD" => $dbpassword, "Database" => $db) or die("Couldnt connect to server");
$dbconnect = sqlsrv_connect($host, $connectionInfo);
$sql = "INSERT INTO historic (temperature, humidity, date) VALUES($t,$h,CURRENT_TIMESTAMP)";
sqlsrv_query($dbconnect, $sql) or die( print_r( sqlsrv_errors(), true));
?>
答案 0 :(得分:0)
sqlsrv_connect()无法获得连接并返回FALSE。 你必须调试它。
希望这有帮助。
答案 1 :(得分:0)
使用Windows身份验证进行连接。
<?php
$serverName = "serverName\sqlexpress"; //serverName,instanceName
$ConInfo = array( "Database"=>"dbName");
$conn = sqlsrv_connect( $serverName, $ConInfo);
if( $conn ) {
echo "Connection established.<br />";
}else{
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
?>
按用户名和密码连接。
<?php
$serverName = "serverName\sqlexpress";
$ConInfo = array( "Database"=>"dbName", "UserId"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $ConInfo);
if( $conn ) {
echo "Connection established.<br />";
}else{
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
?>
希望这有帮助
答案 2 :(得分:0)
答案实际上非常简单,这是一个语法错误。 MSSQL不会接受插入的NULL,但是MySQL会这样做。 我对MSSQL并不熟悉,所以这就是为什么我没有看到错误。
因此,该行的正确语法是:
$sql = "INSERT INTO historic (temperature, humidity, date) VALUES($t,$h,CURRENT_TIMESTAMP)";
我只需要指定列(第一个表是ID,自动递增)并删除NULL。在MySQL中,NULL会跳过该列。