插入mysql不起作用


Insert into mysql not working

这里的第一篇文章和php编程新手。

我正在尝试将$val(2)插入到mysql数据库中。我的代码如下:

$username = "xxx";
$password = "xxx";
$hostname = "xxx";
$val= "2";
$connection=mysql_connect ($hostname, $username, $password)
or die("Unable to connect to MySQL");
$selected = mysql_select_db("database",$connection)
or die("Could not select examples");
$url = "http:xxxxxxxxxxxxx.com";	//url here
$str = file_get_contents($url);
$sql = "INSERT INTO testtable (data)
VALUE ('".$val."')";
   
$ins= mysql_query($test);
if(! $ins )
{
	die('Could not insert: ' . mysql_error());
}

当我运行代码时,没有错误打印出来,但没有数据插入到表中。有人能指出问题吗。我将感谢你的帮助。

附录:

我没有包括以下行:

$url = "http:xxxxxxxxxxxxx.com";    //url here
$str = file_get_contents($url);

在我的第一篇帖子中。

真正的解决方案是改变:

$test to $sql

并注释掉下方的2行

file_get_content($url) 
$str = file_get_contents($url);

这两行必须放在顶部($username="xxx"行之前)才能工作。为这个误导性的问题道歉。

这里有一个SQL错误:

$sql = "INSERT INTO testtable (data)
 VALUE ('".$val."')";

VALUE应该是VALUES

当某些东西不能按预期工作时,您应该始终检查错误(在本例中为mysql_error)。

此外,您不应该再使用mysql扩展插件。它已被弃用多年。查看mysqliPDO以获得更好、更安全的扩展。

事实是您在中调用了错误的变量

$ins= mysql_query($test);

应该是$sql而不是$test

$ins= mysql_query($sql);

根据查询:

$sql = "INSERT INTO testtable (data)
 VALUE ('".$val."')";

CCD_ 8和CCD_。有些人误以为它一定是VALUES两者都有效

参考:

  • http://dev.mysql.com/doc/refman/5.7/en/insert.html

来自手册:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name,...)] 
    [(col_name,...)]
    {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

错误报告会告诉您未定义的变量$test

错误报告添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code

旁注:显示错误只能在暂存中进行,而不能在生产中进行。


您当前的代码对SQL注入是开放的。将mysqli_*与准备好的语句一起使用,或将PDO准备好的报表一起使用


脚注:

mysql_*功能弃用通知:

http://www.php.net/manual/en/intro.mysql.php

从PHP 5.5.0开始,该扩展已被弃用,不建议用于编写新代码,因为从PHP 7.0开始,它将被删除。相反,应该使用mysqliPDO_MySQL扩展。另请参阅MySQL API概述以获取选择MySQL API时的进一步帮助。

这些函数允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»http://www.mysql.com/.

MySQL文档可在»http://dev.mysql.com/doc/.

尝试更新INSERT方法,如下所示(您错过了"VALUE"末尾的"S"):

$sql = "INSERT INTO testtable(data) VALUES ('".$val."')"; 

另一方面,请注意下面的行中有不同的变量,您可以使用"slq"而不是"test",如下所示:

$ins= mysql_query($sql);

有关更多信息,请参阅PHP将数据插入MySQL。

希望这能帮助。。。

$username = "xxx";
$password = "xxx";
$hostname = "xxx";
$val= "2";
$connection=mysql_connect ($hostname, $username, $password)
or die("Unable to connect to MySQL");
$selected = mysql_select_db("database",$connection)
or die("Could not select examples");
$sql = "INSERT INTO testtable (data)
 VALUES ('".$val."')";
 
$ins= mysql_query($sql);
if(! $ins )
{
	die('Could not insert: ' . mysql_error());
}