gpt4 book ai didi

php - 无法将数据写入sql表,

转载 作者:太空宇宙 更新时间:2023-11-03 12:33:41 25 4
gpt4 key购买 nike

我正在尝试使用 PHP 从我的网站将一些信息写入 SQL 数据库。我可以访问数据库进行登录,但是我无法从我的网站向它写入任何内容。此外,我无法查看任何连接错误。

表单页面:

<?php
$dbh = new PDO('mysql:host='.$hostname.';dbname='.$dbname, $user, $pass);

if (!$dbh) { die('Could not connect: ' . mysql_error()); }else echo 'connected';echo '<br>';
if(isset($_COOKIE['username']))
?>
<div id="imagel">
<img class="imagel" src="../images/logos/logo2.jpg" width="300" height="300" alt="studio table" />
</div>
<div id="textr">

<form name="tableofevents" method="post" action="adminhome.php">
Name of Event(Maximum of 83 characters): <input type="text" name="noe"/>
<br>
Event Description (Maximum of 288 characters): <input type="text" name="eventdescription"/>
<br>
Date of Event: <input type="text" name="date"/>
<br>
Ticket Price: <input type="text" name="price"/>
<br>
<input type="submit" name="submit" text="submit"/>
</form>

处理页面:

<?php

$hostname = 'localhost';
$user='******';
$pass='***********';
$dbname='sth420';
$handler = new PDO('mysql:host='.$hostname.';dbname='.$dbname,$user,$pass);

$dbh = mysql_connect ($hostname.';dbname='.$dbname, $user, $pass);

if (!$dbh) { die('Could not connect: ' . mysql_error()); }
else echo 'connected';echo '<br>';


if(isset($_COOKIE['username']))
{
$username=$_COOKIE['username'];
$password=$_COOKIE['password'];

$sql='SELECT * FROM Users WHERE ID=:id';
$results = $handler->prepare($sql);
$results->execute([':id' => $username]);
$row = $results->fetch();
if($row!=null)



{
$pword = $row['Password'];
if($pword == $password)
{
if(isset($_POST['submit']))
{
$noe=$_POST['noe'];
$ed=$_POST['eventdescription'];
$date=$_POST['date'];
$price=$_POST['price'];



$sql='INSERT INTO ismievents ( title, evtdesc, dandt, price ) VALUES(0, :noe, :eventdescription, :date, :price)';
mysql_error()
$results = $handler->prepare($sql);
$results->execute([':noe' => $noe, ':eventdescription' => $ed, ':date' => $date, ':price' => $price]);
$handler = null;
header('Location: events.html');


}
}
}
}
if (!mysql_query($sql,$dbh))
{
die('Error: ' . mysql_error());
}
echo "1 record added";

mysql_close($dbh);
require_once('adminhome.html');

?>

最佳答案

您正在混合使用 PDO 和 mysql_connect()。这是无效的,因为它们是不兼容的 API。删除对 mysql_*() 的所有引用并只使用您的 PDO 语句。您基本上通过对 mysql_query() 的错误调用复制了每个 PDO 语句,但您应该没有 mysql_connect()、mysql_query()、mysql_error()、mysql_fetch_*().

引用the manual on PDO prepared statements查看许多示例。

我发现此处的列数不匹配。您列出了 4 列,但 VALUES () 列表包含 5 列:

// Prepared statemetn looks ok...
$sql='INSERT INTO ismievents ( title, evtdesc, dandt, price ) VALUES(0, :noe, :eventdescription, :date, :price)';
// But this is meaningless here...
mysql_error()

我还注意到您正在使用 PHP 5.4 数组文字,例如:

$results->execute([':noe' => $noe, ':eventdescription' => $ed, ':date' => $date, ':price' => $price]);

希望您实际上是在 PHP 5.4 中运行此代码。

实际上,您需要将这段代码重新设计,以清除 PDO 和 mysql_*() 之间的不兼容性。之后,您将能够缩小其他问题的范围。

最后要注意的是,确实不建议将密码存储在$_COOKIE 中。成功登录后,将登录状态存储在 $_SESSION 中。

关于php - 无法将数据写入sql表,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14247961/

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