php var 值包含引号

发布于 2024-12-14 00:18:56 字数 521 浏览 5 评论 0原文

所以...我有一个 mysql_fetch_array 并且当某些 mysql 数据包含单引号或双引号时我遇到了问题。这是我的代码的简化版本:

while($row=mysql_fetch_array($list)) {
    echo "<tr>";
    echo "<td onclick='edit_form(\"" . $row['item'] . "\");'>" . $row['item'];
    echo "</td></tr>";
    }

edit_form() 函数用于将当前项目的值发送回表单中输入的值,以便用户可以轻松编辑其条目,然后发送 UPDATE 命令到 mysql 以及正确的主键 ID(由于不相关,我省略了)。我遇到的唯一问题是,如果用户将单引号或双引号放入表单中,则会弄乱 onclick 属性。请帮忙!!我对 php 很陌生,无法弄清楚这一点。我已经搞乱了 htmlentites() 和 html_entity_decode() 但仍然一无所获。太感谢了!

So... I have a mysql_fetch_array and I'm running into an issue when some of the mysql data contains single or double quotes. This is the dumbed down version of my code:

while($row=mysql_fetch_array($list)) {
    echo "<tr>";
    echo "<td onclick='edit_form(\"" . $row['item'] . "\");'>" . $row['item'];
    echo "</td></tr>";
    }

The edit_form() function is used to send the value of the current item back to the value of the input in the form so the user can then easily edit their entry and then sends an UPDATE command to mysql along with the proper primary key id (which I left out because of irrelevancy). The only issue I have is if a user puts single or double quotes into the form then it messes up the onclick attribute. Please help!! I am pretty new to php and can't figure this out. I've messed around with htmlentites() and html_entity_decode() but am still getting no where. Thank you so much!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

始终不够爱げ你 2024-12-21 00:18:57

$row['item'] 之前使用 htmlspecialchars将其插入您的文档中。

所以你的“简化”代码应该是:

while($row=mysql_fetch_array($list)) { 
    $item = htmlspecialchars($row['item']);
    echo "<tr>"; 
    echo "<td onclick='edit_form(\"" . $item . "\");'>" . $item;
    echo "</td></tr>"; 
} 

Use htmlspecialchars on $row['item'] before inserting it in your document.

So your "dumbed-down" code should be:

while($row=mysql_fetch_array($list)) { 
    $item = htmlspecialchars($row['item']);
    echo "<tr>"; 
    echo "<td onclick='edit_form(\"" . $item . "\");'>" . $item;
    echo "</td></tr>"; 
} 
月下客 2024-12-21 00:18:57

尝试使用下面的行而不是代码中的原始行,看看它是否有效:

echo "<td onclick='edit_form(\"" . str_replace('"',""e;",$row['item']) . "\");\">" . $row['item'];

并且在您想要显示 $item 字段的位置,如果您得到“e; 而不是 ' " ',只需将其反向替换即可。例如:

$qoute_free= str_replace('"e','"',$passed_value);

如果您在 javascript 中使用它,则该函数可以如下所示:

function edit_form(passed_value)
{
  new_value=passed_value.replace(/"e;/g,'"');
}

Try the below line instead of the original in your code and see if it works:

echo "<td onclick='edit_form(\"" . str_replace('"',""e;",$row['item']) . "\");\">" . $row['item'];

And where you would like to display the $item field, just replace it in reverse if you get "e; instead of ' " '. For example:

$qoute_free= str_replace('"e','"',$passed_value);

If you are using it in javascript, the function can be as below:

function edit_form(passed_value)
{
  new_value=passed_value.replace(/"e;/g,'"');
}
甜妞爱困 2024-12-21 00:18:57

我建议使用 json_encode。这样您就不必担心 htmlspecialchars 可能会错过的特殊情况(例如换行符)。

while($row=mysql_fetch_array($list)) {
    echo "<tr>";
    echo "<td onclick='edit_form(" . json_encode($row['item'], JSON_HEX_APOS) . ");'>" . $row['item'];
    echo "</td></tr>";
}

I advise using json_encode. That way you don't have to worry about special cases htmlspecialchars might miss (such as newlines).

while($row=mysql_fetch_array($list)) {
    echo "<tr>";
    echo "<td onclick='edit_form(" . json_encode($row['item'], JSON_HEX_APOS) . ");'>" . $row['item'];
    echo "</td></tr>";
}
不羁少年 2024-12-21 00:18:57

我只是将这些值放回到我的

中(当他们点击 时),当他们点击 SUBMIT 时,它会将数据定向到不同的 .php 文件使用 MySQL UPDATE 而不是 INSERT。我终于找到了一些有效的代码!

  • $list 是我在文档顶部运行的 mysql_query
  • $item 是我在 MySQL 中的一个专栏的标题 < /p>

    while($row=mysql_fetch_array($list)){
        $item = json_encode($row['item']);
        $item = str_replace("'","'",$item);
        echo "" 。 $行['项目'] 。 “”;
    }
    

现在,当

时,它在 中正确显示。单击 td>(通过 jQuery input.val($item)),它会通过 $row['item'] 正确显示在表格中。我不太清楚它是如何工作的(编码如何使其工作),但我很高兴它是这样的。疯狂!!!!感谢您的回复!感谢您的努力!

I'm just putting the values back into my <form> (when they click on a <td>) and when they hit SUBMIT it directs the data to a different .php file that uses a MySQL UPDATE instead of an INSERT. I finally found some code that works!

  • $list is a mysql_query I ran at the top of the document
  • $item is the title of one of my columns in MySQL

    while($row=mysql_fetch_array($list)){
        $item = json_encode($row['item']);
        $item = str_replace("'","'",$item);
        echo "<td onclick='edit_form(" . $item . ");'>" . $row['item'] . "</td>";
    }
    

Now it display's correctly in the <form> when <td> is clicked (by jQuery input.val($item)) and it shows up in the table correctly via $row['item']. I don't really understand exactly how it's working (how the encode is making it work) but I am glad it is. Crazyness!!!! Thanks for responding! and thanks for your effort!!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文