PHP未插入MySQL数据库
我要发布到本地托管的MySQL数据库中的一个表中,但是当我运行脚本时,页面保持白色,但表中没有发布任何内容。我将添加我的代码以进行澄清。我使用USBWebserver在服务器上托管apache和MySQL服务器PHP未插入MySQL数据库,php,mysql,sql,Php,Mysql,Sql,我要发布到本地托管的MySQL数据库中的一个表中,但是当我运行脚本时,页面保持白色,但表中没有发布任何内容。我将添加我的代码以进行澄清。我使用USBWebserver在服务器上托管apache和MySQL服务器 <?php //connectie leggen met input data //$con = //variablen input invullen (bijv $gebruikeragenda = $_POST['gebruikeragenda']; $gebrui
<?php
//connectie leggen met input data
//$con =
//variablen input invullen (bijv $gebruikeragenda = $_POST['gebruikeragenda'];
$gebruikeragenda = 'Testafspraak'; //hierin specifieren op welke account dit evenement geplaatst moet worden
$tegebruikenagenda = ''; //hierin specifieren we de agenda waarin het evenement geplaatst moet worden
$begintijd = '2014-01-13 15:30:00'; //begintijd specifieren
$eindtijd = '2014-01-13 16:30:00'; //eindtijd specifieren
$medeaanwezige = ''; //emailadressen van andere aanwezige tijdens dit evenement
//connectie leggen met MySQL(aanpasbaarnaar SQLite indien nodig)
$con=mysqli_connect("localhost:3307","root","usbw","baikal");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
//input van hierboven ombouwen en in de database van Baikal bouwen
$calendardata = $gebruikeragenda;
$uri = 'default';
$lastmodified = $begintijd; //laatst gemodificeerd
$calenderid = '1'; //het id van de agenda waarbij de event hoort
$etag = 'niks';
$size = '200'; //grootte
$componenttype = ''; //wordt er gebruik gemaakt van een notificatie, voer hier dan VTODO in
$firstoccurence = $begintijd; //begintijd van evenement
$lastoccurence = $eindtijd; //eindtijd van evenement
//gegevens in de database plaatsen
mysqli_query($con,"INSERT INTO calendarobjects (calendardata, uri, calendarid, lastmodified, etag, size, componenttype, firstoccurence, lastoccurence) VALUES (".$calendardata.", ".$uri.",
".$lastmodified.",".$etag.",".$size.",".$componenttype.",".$firstoccurence.",".$lastoccurence.")");
mysqli_close($con);
您必须将字符串用单引号或双引号括起来,并确保参数的数量与值的数量相匹配。(缺少calendarid
)
顺便说一句。。您的代码容易受到SQL注入的攻击,因此必须使用real\u escape\u string
或更好的方法 您需要对值使用引号
您有9个属性和8个值。查询中缺少一个值。请在查询中设置另一个值,然后重试
试试这个:
<?php
//connectie leggen met input data
//$con =
//variablen input invullen (bijv $gebruikeragenda = $_POST['gebruikeragenda'];
$gebruikeragenda = 'Testafspraak'; //hierin specifieren op welke account dit evenement geplaatst moet worden
$tegebruikenagenda = ''; //hierin specifieren we de agenda waarin het evenement geplaatst moet worden
$begintijd = '2014-01-13 15:30:00'; //begintijd specifieren
$eindtijd = '2014-01-13 16:30:00'; //eindtijd specifieren
$medeaanwezige = ''; //emailadressen van andere aanwezige tijdens dit evenement
//connectie leggen met MySQL(aanpasbaarnaar SQLite indien nodig)
$con=mysqli_connect("localhost:3307","root","usbw","baikal");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
//input van hierboven ombouwen en in de database van Baikal bouwen
$calendardata = $gebruikeragenda;
$uri = 'default';
$lastmodified = $begintijd; //laatst gemodificeerd
$calenderid = '1'; //het id van de agenda waarbij de event hoort
$etag = 'niks';
$size = '200'; //grootte
$componenttype = ''; //wordt er gebruik gemaakt van een notificatie, voer hier dan VTODO in
$firstoccurence = $begintijd; //begintijd van evenement
$lastoccurence = $eindtijd; //eindtijd van evenement
$sql = "INSERT INTO calendarobjects (calendardata, uri, calendarid, lastmodified, etag, size, componenttype, firstoccurence, lastoccurence) VALUES ('$calendardata', '$uri',
'$lastmodified','$etag','$size','$componenttype','$firstoccurence','$lastoccurence')";
//gegevens in de database plaatsen
if( mysqli_query($con,$sql)){
echo "successully inserted";
}else{
echo "something wrong";
}
mysqli_close($con);
您的列和值不匹配。您正试图在9列中插入8个值
具体来说,您似乎缺少一个日历ID
其次,字符串需要用引号括起来
最后,您很容易受到SQL注入的影响。考虑使用语句。引号中的换行字符串值。或者更好地切换到MySQLi/PDO-prepared语句,其中bind-variablesString值需要在引号中。我还建议您使用预先准备好的语句。9列,8个值。它们必须匹配。通过使用外部变量构建SQL语句,您将面临SQL注入攻击。此外,任何带有单引号的输入数据,如“O'Malley”的名称,都会破坏您的SQL查询。请了解如何使用参数化查询(最好是PDO模块)来保护您的web应用程序。有一些例子可以帮助您入门,并且有许多详细的例子。编写的代码不易被注入,因为他的所有变量都是硬编码的。@thelr,您的观点是正确的。我假设这些都是硬编码的,只是为了发布问题。是的,顺便问一下,你知道为什么MySQL表在lastmodified字段中只显示2014,而我输入了整个datetime字符串吗?@joostmakaay这将取决于字段的定义。不过,最好再问另一个问题。如果您的其他日期字段显示正确,可能需要确保lastmodified
字段的定义方式相同。
<?php
//connectie leggen met input data
//$con =
//variablen input invullen (bijv $gebruikeragenda = $_POST['gebruikeragenda'];
$gebruikeragenda = 'Testafspraak'; //hierin specifieren op welke account dit evenement geplaatst moet worden
$tegebruikenagenda = ''; //hierin specifieren we de agenda waarin het evenement geplaatst moet worden
$begintijd = '2014-01-13 15:30:00'; //begintijd specifieren
$eindtijd = '2014-01-13 16:30:00'; //eindtijd specifieren
$medeaanwezige = ''; //emailadressen van andere aanwezige tijdens dit evenement
//connectie leggen met MySQL(aanpasbaarnaar SQLite indien nodig)
$con=mysqli_connect("localhost:3307","root","usbw","baikal");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
//input van hierboven ombouwen en in de database van Baikal bouwen
$calendardata = $gebruikeragenda;
$uri = 'default';
$lastmodified = $begintijd; //laatst gemodificeerd
$calenderid = '1'; //het id van de agenda waarbij de event hoort
$etag = 'niks';
$size = '200'; //grootte
$componenttype = ''; //wordt er gebruik gemaakt van een notificatie, voer hier dan VTODO in
$firstoccurence = $begintijd; //begintijd van evenement
$lastoccurence = $eindtijd; //eindtijd van evenement
$sql = "INSERT INTO calendarobjects (calendardata, uri, calendarid, lastmodified, etag, size, componenttype, firstoccurence, lastoccurence) VALUES ('$calendardata', '$uri',
'$lastmodified','$etag','$size','$componenttype','$firstoccurence','$lastoccurence')";
//gegevens in de database plaatsen
if( mysqli_query($con,$sql)){
echo "successully inserted";
}else{
echo "something wrong";
}
mysqli_close($con);