我已多次尝试运行此代码并将数据插入到我的数据库中。无论我尝试什么,我都无法弄清楚问题。 php看起来像这样:
File "C:\Python35-32\lib\site-packages\flask_wtf\form.py", line 158, in __init__
super(Form, self).__init__(*args, **kwargs)
TypeError: __init__() takes from 1 to 2 positional arguments but 7 were given
非常感谢任何帮助
答案 0 :(得分:0)
为什么使用mysqli?它已经被废弃了吗? 现在使用PDO。
以下是一个例子:
<?php
if (isset($_POST['submit'])) {
$titleTag = $_POST['title'];
$composerTag = $_POST['composer'];
$unicodeTag = $_POST['unicode'];
$tempoTag = $_POST['tempo'];
$yearTag = $_POST['year-used'];
$languageTag = $_POST['language'];
$keyTag = $_POST['key-signature'];
$pianoTag = $_POST['piano'];
$temposelTag = $_POST['temposel'];
$partsTag = $_POST['parts'];
try {
$pdo = new PDO(DSN,DBUSER,DBUSERPASSWD);
} catch (PDOException $e) {
echo "Failed to connect to Database: " . $e->getMessage() . "\n"; die();
}
$pdo->exec("SET NAMES 'utf8' COLLATE 'utf8_general_ci'");
$sql = "INSERT INTO musicdb (title, composer, unicode, temptxt, yearused, languages, pianokeys, piano, temposel, parts)
VALUES (:titleTag,:composerTag,:unicodeTag,:tempoTag,:yearTag,:languageTag,:keyTag,:pianoTag,:temposelTag,:partsTag)";
$query = $pdo->prepare("$sql");
$query->bindValue(':titleTag',$titleTag);
$query->bindValue(':composerTag',$composerTag);
$query->bindValue(':unicodeTag',$unicodeTag);
$query->bindValue(':tempoTag',$tempoTag);
$query->bindValue(':yearTag',$yearTag);
$query->bindValue(':languageTag',$languageTag);
$query->bindValue(':keyTag',$keyTag);
$query->bindValue(':pianoTag',$pianoTag);
$query->bindValue(':temposelTag',$temposelTag);
$query->bindValue(':partsTag',$partsTag);
$query->execute();
if($query->rowCount() > 0){
echo "New record created successfully!";
} else {
echo "Error!";
}
}
?>
当然,您需要使用正则表达式过滤来自表单的所有内容。这很简单!
一旦正则表达式分析了将所有内容转换为htmlentities以避免恶意代码所需的所有内容:
下面的正则表达式“/([a-zÀ-ÿ0-9\ s] +)/ i”只允许包含或不包含重音符号,数字和空格的字母:
<?php
preg_match('/([a-zÀ-ÿ0-9\s]+)/i', $_POST['any_field_form'], $output);
if((isset($output[1]) == true) and ($output[1] != null)) {
//Convert everything to htmlentities to avoid malicious code
$get_the_data = htmlentities($output[1], ENT_QUOTES, 'UTF-8', false);
} else {
$get_the_data = null;
}
?>
这样可以避免表单出现问题。当然,对于每个表单字段,您都必须执行特定的正则表达式。但这会让你的代码变得更聪明。
对不起,如果文本中有任何错误。我知道如何用英语阅读,但我不知道怎么写,所以我用翻译器。 但就是这样,男孩!