gpt4 book ai didi

php - 表单提交中的撇号向 MYSQL 添加行会导致错误...不确定我是否应该使用 "mysql_escape_string",如果是的话怎么办?

转载 作者:行者123 更新时间:2023-11-30 00:58:23 27 4
gpt4 key购买 nike

我已经进行了一些谷歌搜索,但仍然对当我将数据插入 php 表单以添加数据库时如何处理撇号感到困惑。目前,我输入的所有内容都没有撇号,然后通过 phpmyadmin 手动进入,在应该的地方添加撇号,这很痛苦。我明白为什么会收到错误,但不确定如何修复它(错误是您的 SQL 语法有错误;请检查与您的 MySQL 服务器版本对应的手册以获取正确的语法)。

我发现使用真正的转义字符串并添加斜杠/删除斜杠。我认为真正的转义字符串才是我需要使用的。我尝试将其添加到我的代码中,但显然不在正确的位置,因为它只向我显示了一个空白页面。

这是我的代码。其他一切都工作正常...我知道我不是 php/sql 专家,所以请不要评判代码。我只需要有关如何处理撇号问题的帮助。唯一可能有撇号的列是马的名字。

<?php
$detailsform = "
<form method='post' action='resultspage.php'>
<p>Year: <input type='text' name='yearofshow' size='4' maxlength='4' value='2013'></p>
<p>Show Name: <input type='text' name='showname' size='20' maxlength='100'></p>
<p>Level: <Select name='level'><option>Age A</option><option>Age B</option></select></p>
<p># Horses In Level: <input type='text' name='nohorses' size='20' maxlength='100'></p>
<p><input type='submit' name='details' value='Submit'></p>
</form>
";

if(isset($_POST['details']))

{
echo "
<form method='post' action='results_feh.php'>
<p><strong>Year:</strong> {$_POST['yearofshow']} <input type='hidden' name='yearofshow' value='{$_POST['yearofshow']}' size='4' maxlength='4'></p>
<p><strong>Show Name:</strong> {$_POST['showname']} <input type='hidden' name='showname' value='{$_POST['showname']}' size='20' maxlength='100'></p>
<p><strong>Level:</strong> {$_POST['level']} <input type='hidden' name='level' value='{$_POST['level']}' size='20' maxlength='100'></p>
<p><strong># Horses In Level:</strong> {$_POST['nohorses']} <input type='hidden' name='nohorses' value='{$_POST['nohorses']}' size='20' maxlength='100'></p>
";

$count = 0;

echo "<table><tr><td></td><td><b>Horse Name</b></td><td><b>Owned By</b></td></tr>";

while ($count < $_POST['nohorses'])
{

$count = $count + 1;
echo "<tr><td>{$count}</td><td><input type='text' name='horse{$count}' size='20' maxlength='100'></td><td><input type='text' name='rider{$count}' size='20' maxlength='100'></td></tr>";

}

echo "
</table><p><input type='submit' name='horses' value='Generate Scores'></p>
</form>
";
}

elseif(isset($_POST['horses']))

{

$countscores = 0;

echo "<P>[b]FEH {$_POST['level']}[/b]</P>";

while ($countscores < $_POST['nohorses']){

$countscores = $countscores + 1;
$starters = $_POST['nohorses'];

**A bunch of data goes here to randomize a big set of scores**

$row = array ("name" => "$_POST[$horse]", "rider" => $_POST[$rider], "conformation" =>"$average", "frame" =>"$average2", "legsfeet" =>"$average3", "walk" =>"$average4", "trot" =>"$average5", "correctness" =>"$average6", "impression" =>"$average7", "score" => "$overall");
$horse_scores[] = $overall;
$horse_list[] = $row;

} // End of loop.


for ($i = 0; $i < count($horse_scores); $i++){

$scores[] = $horse_scores[$i];
}
array_multisort($scores, SORT_DESC, $horse_scores, $horse_list);

for ($i = 0; $i < $starters; $i++){
$place = $i + 1;

echo "$place
{$horse_list[$i]['name']} owned by
{$horse_list[$i]['rider']} [size=85][i]
[{$horse_list[$i]['conformation']} |
{$horse_list[$i]['frame']} |
{$horse_list[$i]['legsfeet']} |
{$horse_list[$i]['walk']} |
{$horse_list[$i]['trot']} |
{$horse_list[$i]['correctness']} |
{$horse_list[$i]['impression']}][/i][/size]
{$horse_list[$i]['score']}<br>";


$query ="INSERT into `fehresults`(name,level,date,event,conformation,frame,legsfeet,walk,trot,correctness,impression,final,starters,place,points)
VALUES ('{$horse_list[$i]['name']}','{$_POST['level']}','{$_POST['yearofshow']}','{$_POST['showname']}','{$horse_list[$i]['conformation']}','{$horse_list[$i]['frame']}','{$horse_list[$i]['legsfeet']}','{$horse_list[$i]['walk']}','{$horse_list[$i]['trot']}','{$horse_list[$i]['correctness']}','{$horse_list[$i]['impression']}','{$horse_list[$i]['score']}','$starters','$place','$points')";
$result = mysql_query($query) or die ("Could not execute query : $query." . mysql_error());
if ($result) {
$text = "The results for this show have been added to the FEH/YEH database.";
}else{
$text = "There was a problem adding the results to the database, please try again.";
}

} // End of for loop.
echo "<p align='center'><a href='resultspage.php'>RANDOMIZE ANOTHER SET OF RESULTS</a> </p>";

} // End of horses.

else {

echo $detailsform;

}

?></body>

最佳答案

这就是为什么escaping your data或使用prepared statements是重要的。它们会清理您的数据并使其安全地插入到您的数据库中。请注意,准备好的语句更安全,而转义查询意味着您需要运行更少的查询(准备好的语句至少需要 2 个查询)。

逃脱很简单

$sql = 'INSERT table SET
field = "' . mysqli_real_escape_string($_POST['field']) . '"
WHERE value = "' . mysqli_real_escape_string($_POST['value']) . '"';

好的一面是,这只是您需要运行的一个查询,然后您就完成了。不好的一面是在某些情况下这可能会存在安全漏洞(主要是您在字符编码方面不小心)

关于php - 表单提交中的撇号向 MYSQL 添加行会导致错误...不确定我是否应该使用 "mysql_escape_string",如果是的话怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20366215/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com