[英]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));
}
上面的答案都没有回答这个问题。 你没有WHERE语句。 您正在尝试为数据库表中的每一行设置LocationQty。 这就是为什么它不起作用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.