Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
插入查询在PHP中失败_Php_Mysql_Sql_Sql Insert - Fatal编程技术网

插入查询在PHP中失败

插入查询在PHP中失败,php,mysql,sql,sql-insert,Php,Mysql,Sql,Sql Insert,我肯定这是一个明显的打字错误,但我看不出来。我正在尝试使用POST将来自HTML表单的数据插入到使用PHP的MySQL数据库中。POST工作成功,但查询失败;我已经检查了表格,确保没有插入任何新内容 以下是用于运行查询的PHP代码: if ($_POST) { $username = "root"; $password = "root"; //ssh don't tell $hostname = "localhost"; $dbhandle = mysql_co

我肯定这是一个明显的打字错误,但我看不出来。我正在尝试使用POST将来自HTML表单的数据插入到使用PHP的MySQL数据库中。POST工作成功,但查询失败;我已经检查了表格,确保没有插入任何新内容

以下是用于运行查询的PHP代码:

if ($_POST) {
    $username = "root";
    $password = "root"; //ssh don't tell
    $hostname = "localhost";

    $dbhandle = mysql_connect($hostname, $username, $password) or die("Unable to connect to MySQL");
    $dbname = "asoiaf";
    $tablename = "charlist";

    $id = '3';
    $bookIntroduced = $_POST['bookIntroduced'];
    $pageIntroduced = $_POST['pageIntroduced'];
    $forename = $_POST['forename'];
    $surname = $_POST['surname'];
    $oldSurname = $_POST['oldSurname'];
    $alias = $_POST['alias'];
    $title = $_POST['title'];
    $pageIntroduced = $_POST['regnalNumber'];

    // Below is the query that fails to execute.

    $query = "INSERT INTO $tablename (
            $id, $bookIntroduced, $pageIntroduced, $title, $forename, $surname, $oldSurname, $alias, $regnalNumber
            )";

    mysql_query($query) or die("Nah, I don't feel like being helpful.");

    mysql_close($dbhandle);
}
下面是descripe命令给出的表的结构:

有人能帮我找出这个问题吗


另外,如果不清楚,我对PHP和SQL是新手。

这样做SQL查询在很多方面都是不好的做法,不仅因为它非常脆弱和不安全,而且我认为如果添加值并引用字符串,它会起作用

$query = "INSERT INTO $tablename VALUES (
        '$id', '$bookIntroduced', '$pageIntroduced', '$title', '$forename', '$surname', '$oldSurname', '$alias', '$regnalNumber'
        )";

我建议不要这样做,我给出这个答案只是因为这是工作代码的最短路径。始终将您的表和列命名为插入mytable col1,col2值:val1,:val2,并使用mysqli的预处理语句。

PHP的mysql_uuAPI很久以前就被弃用了Drawberry,也许我有一个旧版本,我能够在PHP中使用mysql_u命令成功地使用SELECT查询。我应该使用什么来代替?您是否看到错误消息?如果是,那是什么?哦,我猜我应该使用mysqli。出于某种原因,我认为这是不推荐的。请使用带参数的预处理语句。将这些参数绑定到输入值。要获得有用的错误消息,您至少应该使用diemysql\u error之类的工具。那我们的朋友奥布莱恩呢……明白了。现在我将接受你们的建议,尝试编写更好的代码:。我需要学习准备好的声明和mysqli和PDO,哦,天哪,这个学习曲线需要攀岩设备。一些关键点:1当新列添加到表charlist时,此INSERT语句将失败,或者当列的顺序更改时,此INSERT语句将出现意外行为。最佳做法是在插入mytab col1、col2值中列出列。。。。2 SQL注入漏洞,mysql接口的最佳实践是使用mysql\u real\u escape\u string函数。3更好的最佳实践是使用准备好的语句和带有PDO或mysqli接口的绑定变量。4动态创建SQL文本时,echo或printf或vardump SQL文本字符串用于调试+1以获得更好的最佳实践:。mysqli和PDO的区别是什么?