我是PHP和MYSQL的初学者。这是我将数据添加到数据库的简单代码。它不起作用 connection.php(设置mysql连接变量)文件已经创建,并且可以正常使用其他文件和函数。在此处的代码不会将数据添加到数据库时,我没有收到任何错误 有人可以告诉我问题出在哪里吗?
<?php
if (isset($_POST['bookt']) & isset($_POST['type']) & isset($_POST['publisher']) & isset($_POST['year']) & isset($_POST['class']) & isset($_POST['subject'])) {
//set the values
$bookt= $_POST['bookt'];
$type= $_POST['type'];
$publ=$_POST['publisher'];
$year=$_POST['year'];
$class= $_POST['class'];
$subj= $_POST['subject'];
//INSERTING A ROW
$add_query= "INSERT INTO books ('Book Title','Type','Publisher','Yearp', 'Class','Subject')
VALUES ('$bookt','$type','$publ','&year','$class','$subj')";
//query
$result=mysql_query($add_query);
if (!$result) {die("couldn't perform query".mysql_error());}
if ($result) {echo " </ br> <p><script type='text/javascript'>alert('INSERT SUCCESSFUL!!!');</script></p><br /><br /> insert id was ".mysql_insert_id();}
};
?>
答案 0 :(得分:1)
如果您想在if语句中使用多个条件,请使用逻辑运算符&#34; &amp; &#34;。另外mysql_
已经从PHP7中消失了很长时间。
答案 1 :(得分:1)
此代码存在许多重大问题。
首先,请don't use mysql_*
; mysql_*
函数已过时,deprecated且不安全。它们完全从PHP 7中删除。请改用MySQLi
或PDO
。
其次,布尔“和”运算符为&&
,而不是&
(按位“和”运算符)。
第三,它是$year
,而不是&year
。
第四,将列名放在反引号中,而不是单引号('...'
):
$add_query= "INSERT INTO books (`Book Title`,`Type`,`Publisher`,`Yearp`, `Class`,`Subject'`)
VALUES ('$bookt','$type','$publ','$year','$class','$subj')";
单引号会导致查询失败。这就是您的查询根本不起作用的原因。
第五,您没有进行任何错误检查或数据验证。
第六,你对SQL injection持开放态度。您需要使用预准备语句,并且从不将用户输入直接放入SQL中。
可能会有更多问题,但这些都是重大问题。