繁体   English   中英

使用PHP + sqlsrv更新MSSQL表

[英]Updating MSSQL table with PHP + sqlsrv

我正在努力做最简单的事......

我有一个包含2个字段的表单。 我想在这些字段中输入数据并让它们将数据写入我的数据库(使用sqlsrv驱动程序的mssql)。

连接到数据库不是问题。 这是我的表单处理器(目前仅设置为更新数量(qnty)):

require_once 'dbconnect.php';

$partno = $_POST["partno"];
$qnty = $_POST["qnty"];

$sql = 'UPDATE WestDevDB SET LocationQty = $_POST["qnty"]';

$result = sqlsrv_query($conn,$sql) or die(sqlsrv_errors());

我得到的只是错误:

注意:第8行Array上的filepath \\ file.php中的数组转换为字符串

什么也写不出来

我已经尝试将$_POST["qnty"]改为$_POST["qnty"][0]认为这可以解决问题,但它没有任何区别。

有什么想法吗?

基本PHP语法101: '引用字符串插入变量。 这意味着您的查询定义:

$sql = 'UPDATE WestDevDB SET LocationQty = $_POST["qnty"]';

发送文字字符$_P等...作为比较LocationQty的值。 这也意味着您的查询导致语法错误,因为$_ etc...不是有效的字段名称,几乎在sun下的任何数据库中。

即使' -quoted字符串DID内插变量:

a)无论如何你都会对sql注入攻击敞开大门。
b)除非使用{}语法,否则不能在字符串内引用数组键:

$sql = "UPDATE ... = {$_POST['qnty']};"
or
$sql = "UPDATE ... = " . $_POST['qnty'];

你应该使用params来避免sql注入和字符串连接错误。

$qnty = $_POST["qnty"];
//sanitize $qnty ( !is_null, is_numeric, ... )
$sql = "UPDATE WestDevDB SET LocationQty = ( ?)";
$params = array( $qnty );

$stmt = sqlsrv_query( $conn, $sql, $params);
if( $stmt === false ) {
     die( print_r( sqlsrv_errors(), true));
}

更多sqlsrv_query更新Microsoft MSDN上的示例

上面的答案都没有回答这个问题。 你没有WHERE语句。 您正在尝试为数据库表中的每一行设置LocationQty。 这就是为什么它不起作用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM