【问题标题】:Inserting data into a table with arrays将数据插入到带有数组的表中
【发布时间】:2014-04-12 19:49:29
【问题描述】:

我正在使用数组将数据插入到名为 tPerson 的表中。如果脚本成功发挥作用,它将回显:

SQL: 插入 tPerson(Salutation、FirstName、LastName、CompanyID)值(Morris、Sparrow 先生,4 岁)(Mrs,Mary,Haslett,2 岁)(Gill,Hennesey 女士,1 岁)

成功了。

它的工作没有成功并回响:

SQL: 插入 tPerson(Salutation、FirstName、LastName、CompanyID)值(Morris、Sparrow 先生,4 岁)(Mrs,Mary,Haslett,2 岁)(Gill,Hennesey 女士,1 岁)

失败。

我的代码如下:

$hostname = "localhost";
$username = "root";
$password = "";

$databaseName = "alphacrm";

$dbConnected = @mysql_connect($hostname, $username, $password);
$dbSelected = @mysql_select_db($databaseName, $dbConnected);

$dbSuccess = true;
if ($dbConnected) {
    if (!$dbSelected) {
        echo "DB connection FAILED<br><br>";
        $dbSuccess = false;
    } else {
        echo "DB connection SUCCESSFUL<br><br>";
    }
} else {
    echo "MySql connection FAILED<br><br>";
}
}

// Execute code ONLY if connections were successful

if ($dbSuccess) {

{ // setup ARRAY of field names

    $personField = array(
        "Salutation" => "Salutation",
        "FirstName" => "FirstName",
        "LastName" => "LastName",
        "CompanyID" => "CompanyID"
    );
}

{ // setup ARRAY of data ROWS

    $personData[0] = array("Mr","Morris","Sparrow","4");
    $personData[1] = array("Mrs","Mary","Haslett","2");
    $personData[2] = array("Ms","Gill","Hennesey","1");

    $numRows = sizeof($personData);
}

{ // SQL statement with ARRAYS

    //Fieldnames part of INSERT statement

    $person_SQLinsert = "INSERT INTO tPerson (
        ".$personField["Salutation"].",
        ".$personField["FirstName"].",
        ".$personField["LastName"].",
        ".$personField["CompanyID"]."
        )";

// VALUES part of INSERT statement

$person_SQLinsert .= "VALUES ";

$indx = 0;
$person_SQLinsert .= "(
    ".$personData[$indx][0].",
    ".$personData[$indx][1].",
    ".$personData[$indx][2].",
    ".$personData[$indx][3]."
    )";

$indx++;
$person_SQLinsert .= "(
    ".$personData[$indx][0].",
    ".$personData[$indx][1].",
    ".$personData[$indx][2].",
    ".$personData[$indx][3]."
    )";

$indx++;
$person_SQLinsert .= "(
    ".$personData[$indx][0].",
    ".$personData[$indx][1].",
    ".$personData[$indx][2].",
    ".$personData[$indx][3]."
    )";

}

{ // Echo and execute the SQL and test for success

    echo "<strong><u>SQL:<br></u></strong>";
    echo $person_SQLinsert."<br><br>";

    if (mysql_query($person_SQLinsert)) {
        echo "was SUCCESSFUL.<br<br>";
    } else {
        echo "FAILED.<br><br>";
    }
}
} // END ($dbSuccess)

?>

所有帮助都将不胜感激,因为我对我的脚本为什么不工作感到很困惑。

【问题讨论】:

  • 你需要在单引号内设置值,它会解决问题。
  • 您还需要在VALUES 集合之间添加一个逗号(即(...), (...), (...))。
  • 请不要使用mysql_,改用mysqli_(改进)。
  • 使用mysqli有什么好处?
  • 什么是 sql 错误?尝试us1.php.net/manual/en/function.mysql-error.php 并准备发布您的表结构,如 SHOW CREATE TABLE tPerson 所示

标签: php arrays database


【解决方案1】:

就像@mysql_select_db 用于@mysql_query 而不是这个mysql_query。 还检查了你的mysql连接和数据库连接是否成功。

您对多行的查询必须采用这种格式 "INSERT INTO Table (Column1, Column2) VALUES(Value1, Value2), (Value1, Value2);"

打印您的查询并使用此语法进行检查。

【讨论】:

  • 数据库和mysql连接成功。
  • 是的,它仍然返回 FAILED 消息
  • 您对多行的查询必须采用这种格式“INSERT INTO Table (Column1, Column2) VALUES(Value1, Value2), (Value1, Value2);"打印您的查询并使用此语法进行检查。
  • 我更改了代码,输出如下: INSERT INTO tPerson ( Salutation, FirstName, LastName, CompanyID ) VALUES( Mr, Morris, Sparrow, 4 ), ( Mrs, Mary, Haslett, 2 ), (Ms, Gill, Hennessey, 1 );它仍然给出输出“FAILED”。
猜你喜欢
  • 1970-01-01
  • 2021-08-15
  • 2021-05-14
  • 2020-02-10
  • 2022-06-16
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 2016-03-25
相关资源
最近更新 更多