MySQL PHP MySQL\u real\u escape\u string()-此值不是字符串吗?

MySQL PHP MySQL\u real\u escape\u string()-此值不是字符串吗?,php,mysql,string,Php,Mysql,String,我试图用一个多选框中的信息更新一条记录,当我使用INSERT INTO添加新行时,它工作正常,但现在我试图将它添加到使用mysql\u real\u escape\u string()的代码中,它返回了本文底部的错误消息。我想我试图传递给它的值有问题,但我不知道如何格式化它以使PHP满意 $query = "UPDATE studies SET strategies = '" . mysql_real_escape_string($strategies) . "' WH

我试图用一个多选框中的信息更新一条记录,当我使用INSERT INTO添加新行时,它工作正常,但现在我试图将它添加到使用mysql\u real\u escape\u string()的代码中,它返回了本文底部的错误消息。我想我试图传递给它的值有问题,但我不知道如何格式化它以使PHP满意

 $query = "UPDATE studies
            SET strategies = '" . mysql_real_escape_string($strategies) . "' WHERE id = '" . mysql_real_escape_string($id) . "'"; 



while($row = mysql_fetch_array($result)) {
    $strategylist = $row['name'];
    $strategyname = htmlspecialchars($row['name']);
$pagelink = str_replace(" ","_",$strategylist);

    echo '<option value="<a href=&quot;strategies.php?strategy=' . $pagelink . '&quot;>'.$strategyname.'</a>" >' . $strategyname . '</option>' . '\n';
}
$query=“更新研究
设置策略='”。mysql\u real\u escape\u字符串($strategies)。“'其中id='”。mysql\u real\u escape\u字符串($id)。"'"; 
while($row=mysql\u fetch\u数组($result)){
$strategylist=$row['name'];
$strategyname=htmlspecialchars($row['name']);
$pagelink=str_replace(“,”,$strategylist);
回显'.$strategyname'.'.\n';
}
警告:mysql\u real\u escape\u string()希望参数1是字符串,数组在第100行给出(即上面开始SET strategies='“…”的那一行)

$id不是字符串

mysql_real_escape_string($id)
我想

$id不是字符串

mysql_real_escape_string($id)

它抱怨$strategies/$id是一个数组,应该是一个字符串。

它抱怨$strategies/$id是一个数组,应该是一个字符串。

看起来$strategies是一个数组而不是字符串。因为您有一个多选框,如果他们选择了多个项目,$strategies将作为数组返回

这取决于您希望如何在单个数据库列中存储多个选择。如果您只想将这些选择附加到一个大字符串中,请使用内爆()

预计到达时间:

顺便说一句,你在这里所做的看起来真的很吓人。你有一个选择框选项上的值的html链接,然后将其存储在数据库中(可能以后会显示?)

这实际上是让你自己暴露在一个微不足道的XSS攻击面前,有人提交了一个带有自己选项的假表单,其中包含指向攻击站点的链接,你很乐意将其存储在数据库中,稍后在站点上显示


在数据库中存储一个ID(或您案例中的ID列表)或其他内容,然后在以后需要显示它们时构建链接。

看起来$strategies是一个数组而不是字符串。因为您有一个多选框,如果他们选择多个项目,$strategies将作为数组返回

这取决于您希望如何在单个数据库列中存储多个选择。如果您只想将这些选择附加到一个大字符串中,请使用内爆()

预计到达时间:

顺便说一句,你在这里所做的看起来真的很吓人。你有一个选择框选项上的值的html链接,然后将其存储在数据库中(可能以后会显示?)

这实际上是让你自己暴露在一个微不足道的XSS攻击面前,有人提交了一个带有自己选项的假表单,其中包含指向攻击站点的链接,你很乐意将其存储在数据库中,稍后在站点上显示


存储ID(或案例中的ID列表)或者数据库中的某些内容,然后在需要显示它们时构建链接。

您可以发布分配给$strategies和$id的代码吗?我认为您需要检查设置$id和$strategies变量的代码。否则很难判断它们中的哪一个会触发错误。您应该在查询之前包含一些相关代码y字符串生成。由于使用cast运算符(int)$id或intval($id)而不是mysql_real_escape_string($id)更快。@lc&zingor-根据他的问题,看起来他有一个名为“strategies”的多选框并使用register_globals获取$strategies变量。或者类似的东西。你能发布分配给$strategies和$id的代码吗?我想你需要检查设置$id和$strategies变量的代码。否则很难判断哪一个触发了错误。在生成查询字符串之前,您应该包含一些相关代码。因为使用cast操作符(int)$id或intval($id)而不是mysql\u real\u escape\u string($id)更快。@lc&zingor-根据他的问题,看起来他有一个名为“strategies”的多选框并使用register_globals获取$strategies变量。或者类似的东西。