Php 变量未通过引用传递
在ms sql server数据库中插入行时,出现以下错误: 警告:变量参数3未通过引用传递(以Php 变量未通过引用传递,php,sql-server,Php,Sql Server,在ms sql server数据库中插入行时,出现以下错误: 警告:变量参数3未通过引用传递(以和开头)。传递给sqlsrv\u prepare或sqlsrv\u query的变量参数应通过引用传递,而不是通过值传递。有关更多信息,请参阅产品文档API参考部分中的sqlsrv_prepare或sqlsrv_query。在第6行的C:\…\immotovoegen.php中 参数1和2的警告相同 这是我的php代码: <?php if (!empty($_POST['omschrijving
和开头)。传递给sqlsrv\u prepare
或sqlsrv\u query
的变量参数应通过引用传递,而不是通过值传递。有关更多信息,请参阅产品文档API参考部分中的sqlsrv_prepare
或sqlsrv_query
。在第6行的C:\…\immotovoegen.php中
参数1和2的警告相同
这是我的php代码:
<?php
if (!empty($_POST['omschrijving']) && !empty($_POST['woningtype']) && !empty($_POST['data'])){
$oms = $_POST['omschrijving'];
$type = $_POST['woningtype'];
$data = json_encode($_POST['data']);
$prep = sqlsrv_prepare($conn, "insert into Woning(omschrijving, data, typeid) values (?, ?, ?);", array($oms, $data, $type));
sqlsrv_execute($prep);
print "Woning is toegevoegd";
}
?>
<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="POST">
<!--param 1 "omschrijving"-->
Omschrijving:
<textarea name="omschrijving" id="omschrijving" cols="30" rows="10></textarea>
<!--param 2 "data"-->
<div>
wc: <input type="checkbox" name="data[]" value="wc"/><br/>
cv: <input type="checkbox" name="data[]" value="cv"/><br/>
boiler: <input type="checkbox" name="data[]" value="boiler"/><br/>
</div>
<!--param 3 "woningtype"-->
<select name="woningtype" id="woningtype">
<?php
//code for load data from database
print "<option value='" . $rij["ID"] . "'>" . $rij["naam"] . "</option>";
?>
</select>
</form>
<?php
sqlsrv_close($conn);
?>
您需要将值分配给一个变量,然后将该变量传递给PDO/sqlsrv
<?php
$var = json_encode($_POST['data']);
//checks for all fields are filled in.
$prep = sqlsrv_prepare($conn, "insert into Woning(omschrijving, data, typeid) values (?, ?, ?);",
array($_POST['omschrijving'], $var, $_POST['woningtype']));
sqlsrv_execute($prep);
?>
array()
也是一个函数
我建议你试试
$params = array($oms, $data, $type);
$prep = sqlsrv_prepare($conn, "insert into Woning(omschrijving, data, typeid) values (?, ?, ?);", $params);
你没有将表单标签与POST方法一起使用吗?@Fred ii-是的,我使用。我去更新我的问题“我的代码怎么了?”…除了缺少的表单
标签。。缺少表单方法
。。缺少表单提交
操作..@ChrisMaggs:我已更新我的问题并添加了表单
标记。我忘了把它放在我的问题中。当你在一个文件中使用这一切时,请使用isset()
或!empty()
在POST数组上,看看这是否有帮助。对不起,这对我没有帮助。我想知道PDO与此代码有什么关系,因为它使用的是,而不是PDO?您知道,由于使用了sqlsrv.*
函数,这些函数以任何方式、形状或形式都不是PDO的一部分;)是的,我后来添加了sqlsrv,但没有添加第一个。无论使用pdo还是sqlsrv,变量绑定都是相同的。您需要传递引用。不是函数输出。我修改了我的答案@Luïs。你看这对你有帮助吗?
$params = array($oms, $data, $type);
$prep = sqlsrv_prepare($conn, "insert into Woning(omschrijving, data, typeid) values (?, ?, ?);", $params);