gpt4 book ai didi

php - 将 unix_timestamp 插入 mysql 数据库

转载 作者:行者123 更新时间:2023-11-29 03:35:07 25 4
gpt4 key购买 nike

我试图在 php 中创建一个函数,该函数可以将 unix_timestamp 保存到 mysql 数据库中,但我不断收到有关参数编号无效的错误消息。

这是函数的代码:

function addNew($array){
$sql = 'INSERT INTO USER (id, acronym, name, password)
VALUES (?, ?, ?, UNIX_TIMESTAMP());';



$id = isset($_POST['id']) ? $_POST['id'] : null;
$acronym = isset($_POST['acronym']) ? $_POST['acronym'] : null();
$name = isset($_POST['name']) ? strip_tags($_POST['name']) : null;
$password = isset($_POST['password']) ? strip_tags($_POST['password']) : null;

$params = array($id, $acronym, $name, $password);
$res=$this->db->ExecuteQuery($sql, $array);

if($res) {
$output = 'Användare skapad!';
}
else {
$output = 'Användare kunde tyvärr ej skapas.<br>';
}
return $output;
}

这是用户输入的代码:

$cont = new CUserAdmin($db);

$id = isset($_POST['id']) ? $_POST['id'] : null;
$acronym = isset($_POST['acronym']) ? strip_tags($_POST['acronym']) : null;
$name = isset($_POST['name']) ? strip_tags($_POST['name']) : null;
$password = isset($_POST['password']) ? strip_tags($_POST['password']) : null;

$save = isset($_POST['save']) ? true : false;

$output = null;
if($save){
$array = array($id, $acronym, $name, $salt );
$output = $cont->addNew($array);
}


// Do it and store it all in variables in the belio container.
$belio['title'] = "Ny användare";

$belio['main'] = <<<EOD
<h1>Skapa ny användare</h1>
<form method=post>
<div class="freebox">
<p><label>Acronym <br> <input type='text' name='acronym'/> </label></p>
<p><label>Name:<br> <input type='text' name='name'/> </label></p>
<p><label>Password:<br> <input type='password' name='salt' /> </label></p>
</div>
<p><input type='submit' name='save' value='Spara'/></p>
<p>{$output}</p>
</form>
EOD;

但是该代码不起作用,我收到此错误消息:

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables >does not match number of tokens in /home/saxon/students/20141/josj14/www/webflix/belio/src/CDatabase /CDatabase.php on line 121

问题似乎是 UNIX_TIMESTAMP 本身,当我将它与“?”交换时信息被保存到数据库中。

是否可以通过这种方式将 unix 时间戳保存到数据库中?

最佳答案

$sql = 'INSERT INTO USER (id, acronym, name, password) 
VALUES (?, ?, ?, UNIX_TIMESTAMP());';

在这里您将时间戳插入密码字段

array($id, $acronym, $name, $password);

在这里你输入一个额外的变量,$password 到一个不存在的参数。

$sql = 'INSERT INTO USER (id, acronym, name, password, date_created) 
VALUES (?, ?, ?, ?, UNIX_TIMESTAMP());';

当然可以,将 date_created 更改为适当的字段名称

您还应该散列您的密码,以明文形式存储是不好的做法

关于php - 将 unix_timestamp 插入 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23286882/

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