【问题标题】:Trying to Insert a Variable into MSSQL using PHP尝试使用 PHP 将变量插入 MSSQL
【发布时间】:2012-06-19 16:24:34
【问题描述】:

我正在尝试将一些变量插入 MSSQL,它给了我一个 500 服务器错误

HTTP 错误 500(内部服务器错误):服务器尝试完成请求时遇到了意外情况。

但是,当我用简单的数字或文本值替换这些变量时,它会起作用。我正在运行 Wamp 服务器并连接到亚马逊 RDS MSSSQL 实例。这是我的代码:

$status = "closed";

$connection = odbc_connect("Driver={SQL Server Native Client 10.0};Server=$server;Database=$database;", $user, $password);

$query = "INSERT INTO DatabaseTableName (ColumnName) VALUES ('$status')";

$results = odbc_exec($connection, $query);
if ($results){
    echo "Query Executed";
}else {
    echo "Query failed " .odbc_error();
}  

如果我删除变量 $status 并输入一个数字或一个单词,它会起作用。任何帮助将不胜感激。

【问题讨论】:

  • 那么,$status 的运行时值是多少?你可以在声明后记录 $query 的值,看看它是否是你所期望的吗?

标签: php sql-server wamp


【解决方案1】:
$query = "INSERT INTO DatabaseTableName (ColumnName) VALUES ('".$status."')";

您可能还想考虑清理您的输入。

mysqli real escape string

【讨论】:

  • 确实有效,谢谢!但是,只有当 $status 的值是数字时,当我将其更改为单词时,它才不起作用。但是我看不到错误,它被扔回去了。它给了我一个 500 错误,或者如果我注释掉下面的行:“echo”Query failed“.odbc_error();”然后我得到一个空白屏幕,但它没有写入我的数据库。有什么想法吗?
  • 我在谷歌上快速搜索了 odbc 内部服务器错误,它给了我一些点击。我不熟悉 odbc,所以我不确定它为什么会给你这个错误。您可能希望确保(至少)转义输入以确保您正在执行有效的查询。例如:如果 $status 等于 test's,那么您的查询将读取 VALUES ('test's')。看看这怎么可能是个问题?
  • 你能给我举个例子来说明如果多列被变量填充会是什么样子吗?单词仍然不起作用,这些列是 varchar 列
  • 没关系,它是这样的,它的工作原理是这样的:======= $query = "INSERT INTO TableName (columnone, column2) VALUES ('".$status."' , '" .$status2."')"; ======
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
  • 2013-03-16
  • 1970-01-01
  • 1970-01-01
  • 2011-09-04
  • 2017-09-25
  • 1970-01-01
相关资源
最近更新 更多