这是我不断收到的错误:
致命错误:未捕获的PDOException:SQLSTATE [HY093]:无效的参数 number:参数未在中定义 C:\ xampp \ htdocs \ premiumems \ classes \ Admin.php:89堆栈跟踪:#0 C:\ xampp \ htdocs \ premiumems \ classes \ Admin.php(89): PDOStatement-> execute()#1 C:\ xampp \ htdocs \ premiumems \ process.php(60): Admin-> update(Array,'1')#2 {main}被抛出 C:\ xampp \ htdocs \ premiumems \ classes \ Admin.php在第89行
public function update($fields, $id)
{
//$sql= UPDATE admin SET name = :name,
$st="";
$counter=1;
$total_fields=count($fields);
foreach($fields as $key=>$value)
{
if($counter===$total_fields)
{
$set="$key=:".$key;
$st=$st.$set;
}
else
{
$set="$key=:".$key.",";
$st=$st.$set;
$counter++;
}
}
$sql="";
$sql.= "UPDATE admin SET".$st;
$sql.= "WHERE admin_id =".$id;
$stmt=$this->connection()->prepare($sql);
foreach ($fields as $key => $value)
{
// code...
$stmt->bindValue(':' .$key, $value);
}
$stmtexec=$stmt->execute();
if ($stmtexec)
{
// code...
$reply = "employee updated successfully";
$_SESSION['success']=$reply;
header('location:index.php');
}
else
{
// code...
$reply = "unable to update employee, try again later";
$_SESSION['failure']=$reply;
header('location:edit.php?staffid='.$admin_id);
}
} //function used for updating files
用于处理上述更新过程的类。
答案 0 :(得分:0)
认为您应该在下面尝试此代码。
import sqlite3
import tqdm
import itertools
with sqlite3.connect(":memory:") as conn:
with conn as cur:
cur.execute("create table test(x);")
strings_to_test = ["{}", "a{}", "{0}{0}", "a{0}{0}", "a({})"]
# make a list to hold the invalid chars for each test item
strings_to_test = {x: list() for x in strings_to_test}
def attempt_insert(string, i, invalid_list):
try:
cur.execute("insert into test values ( :{} );".format(string)
.format(chr(i)),{"{}".format(string).format(chr(i)): 42})
except Exception as e:
invalid_list.append(i)
# 0x10FFFF is the max value for UTF chars
for char_num in tqdm.trange(0, 0x10FFFF):
for string, invalid_char_list in strings_to_test.items():
attempt_insert(string, char_num, invalid_char_list)
def gen_ranges(i):
# from https://stackoverflow.com/a/4629241 with changes for Python3
for a, b in itertools.groupby(enumerate(i), lambda x: x[1] - x[0]):
b = list(b)
yield b[0][1], b[-1][1]
def ranges(invalid_chars):
return "{}".format(["0x{:06x} to 0x{:06x}".format(*range) \
for range in gen_ranges(invalid_chars)])
print("Invalid Single Chars: ie :x were: {}".format(
ranges(strings_to_test["{}"])))
print("Invalid Single Second Chars: ie :ax were: {}".format(
ranges(strings_to_test["a{}"])))
print("Invalid Double Chars: ie :xx were: {}".format(
ranges(strings_to_test["{0}{0}"])))
print("Invalid Double Chars in second pos: ie :axx were: {}".format(
ranges(strings_to_test["a{0}{0}"])))
print("Invalid Parenthesised Chars: ie :abc(x) were: {}".format(
ranges(strings_to_test["a({})"])))