简体   繁体   English

使用 if(mysql_query) 在多个表中插入数据

[英]Insert Data in multiple table using if(mysql_query)

I'm beginner in PHP MySQL.我是 PHP MySQL 的初学者。 I would like ask how can I use this code for INSERT DATA IN MULTIPLE TABLES I will be using this in Single FORM.我想问一下如何使用此代码INSERT DATA IN MULTIPLE TABLES我将在单个表单中使用它。

Here is my working code for single table:这是我的单表工作代码:

     if (isset($_POST['btn-signup'])) {
     //table 1
     $variable1 = mysql_real_escape_string($_POST['column1']);
     $variable2 = mysql_real_escape_string($_POST['column2']);
     $variable3 = mysql_real_escape_string($_POST['column3']);
     //table 2
     $var1 = mysql_real_escape_string($_POST['columnT1']);
     $var2 = mysql_real_escape_string($_POST['columnT2']);
     $var3 = mysql_real_escape_string($_POST['columnT3']);



 if(mysql_query("INSERT INTO tableName( column1, column2, column3 )
      VALUES ('$variable1, '$variable2', '$variable3' )"))      
{
  ?>
    <script type="text/javascript">('ADDED SUCCESFULLY!');</script>
  <?php
} else {
?>
  <script type="text/javascript">('Failed!');</script>    
<?php

But I want to add new code for INSERT to another table.但我想将 INSERT 的新代码添加到另一个表中。
I tried like but still error.我试过,但仍然错误。

     if(mysql_query("INSERT INTO tableName( column1, column2, column3 )
      VALUES ('$variables', '$variable2', '$variable3' )")

    ("INSERT INTO tableName2( columnT1, columnT2, columnT3 )
      VALUES ('$var1', '$var2, '$var3' )"))

Try This one..试试这个..

 if(mysql_query("INSERT INTO tableName( column1, column2, column3 )
      VALUES ('$variable1', '$variable2', '$variable3' )"))    // '$variable1' 
{
  ?>
    <script type="text/javascript">alert('ADDED SUCCESFULLY!');</script> // add alert()
  <?php
} else {
?>
  <script type="text/javascript">alert('Failed!');</script>  // add alert()   
<?php }?>

second table :- ("INSERT INTO tableName2( columnT1, columnT2, columnT3 )
  VALUES ('$var1', '$var2, '$var3' )"));

You can Echo the query like您可以像这样Echo显查询

echo  ("INSERT INTO tableName2( columnT1, columnT2, columnT3 )
  VALUES ('$var1', '$var2, '$var3' )")) or die(mysql_error());

or或者

echo  ("INSERT INTO tableName2( columnT1, columnT2, columnT3 )
  VALUES ('$var1', '$var2, '$var3' )"));

INSERT INTO tableName2( columnT1, columnT2, columnT3 ) VALUES ('var1', 'var2, 'var3' ) // out put

You can check what output generate the query or error an copy the generate query and run in the您可以检查生成查询的输出或错误复制生成查询并在

phpmyadmin > select database > table > Sql > paste there > Go

if Its not work then tell me如果它不起作用然后告诉我

You can just use mysql_query() again你可以再次使用mysql_query()

if(mysql_query("INSERT INTO tableName( column1, column2, column3 ) {
  VALUES ('$variable1, $variable2, $variable3' )"))      
    echo 'Success insert into tableName';
} else {
    echo 'Failed insert into tableName';
}

if(mysql_query("INSERT INTO tableName2( columnT1, columnT2, columnT3 )
  VALUES ('$var1, $var2, $var3' )")) {
    echo 'Success insert into tableName2';
} else {
    echo 'Failed insert into tableName2';
}

But its still very procedural, and output here should not be with JS.但是还是很程序化的,这里的输出不应该是JS。 I suggest you start reading OOP and MVC我建议你开始阅读OOPMVC

You need to add quotes around your values.您需要在您的值周围添加引号。 And use mysql_affected_rows to check you row is inserted or not并使用mysql_affected_rows检查您的行是否插入

<?php

$query1=mysql_query("INSERT INTO tableName( column1, column2, column3)
      VALUES('".$variables."','". $variable2."','". $variable3."')");
$row=mysql_affected_rows();
if($row>0){
    echo "INSERT SUCESSFULLY";
}else{
    echo "ERROR";
}

$query2=mysql_query("INSERT INTO tableName2( columnT1, columnT2, columnT3 )
      VALUES ('".$var1."', '".$var2."', '".$var3."' )");

$row1=mysql_affected_rows();
if($row1>0){
    echo "INSERT SUCESSFULLY";
}else{
    echo "ERROR";
}

May I know the error that you are facing while execute the page can try add mysql_query before second insert query.我可以知道您在执行页面时遇到的错误可以尝试在第二次插入查询之前添加mysql_query

mysql_query("INSERT INTO tableName2( columnT1, columnT2, columnT3 )
  VALUES ('$var1, $var2, $var3' )"))

First you have to check to use mysqli or PDO instead of mysql .首先,您必须检查使用mysqliPDO而不是mysql

$con = mysqli_connect("localhost", "user", "password", "databasename");

Solution 1:解决方案1:

You have to do it in separate mysqli_query calls:您必须在单独的mysqli_query调用中执行此操作:

if(mysqli_query($con, "INSERT INTO tableName( column1, column2, column3 ) VALUES ('$variables', '$variable2', '$variable3' )") && mysqli_query($con, "INSERT INTO tableName2( columnT1, columnT2, columnT3 ) VALUES ('$var1', $var2', '$var3' )"))
{
...
}

When using two mysqli_query calls you should take a look at mysql transactions .使用两个mysqli_query调用时,您应该查看mysql 事务

Solution 2:解决方案2:

Use mysqli_multi_query :使用mysqli_multi_query

if(mysqli_multi_query($con, "INSERT INTO tableName2( columnT1, columnT2, columnT3 )
  VALUES ('$var1', '$var2', '$var3'); INSERT INTO tableName2( columnT1, columnT2, columnT3 )
      VALUES ('$var1', $var2', '$var3')"))
{
...
}

When using mysqli you should use mysqli_prepare and mysqli_stmt_bind_param instead of using the php variables directly in your SQL string.使用mysqli您应该使用mysqli_preparemysqli_stmt_bind_param而不是直接在 SQL 字符串中使用 php 变量。 This will help you to avoid SQL injection.这将帮助您避免 SQL 注入。

You cannot do inserts to multiple tables in one statement.您不能在一个语句中插入多个表。 But you can use transactions.但是您可以使用事务。

START TRANSACTION;
INSERT INTO tableName (column1,column2,column3) VALUES ('$variable1','$variable2','$variable3');
INSERT INTO tableName2 (column1,column2,column3) VALUES ('$var1','$var2','$var3');
COMMIT;

See: http://dev.mysql.com/doc/refman/5.1/en/commit.html见: http : //dev.mysql.com/doc/refman/5.1/en/commit.html

You can try this, this may seems complicated for you, but it is better :)你可以试试这个,这对你来说可能看起来很复杂,但它更好:)

<?php

$link = mysqli_connect("localhost", "<username>", "<password>", "<database>");

// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}

 if (isset($_POST['btn-signup'])) {

// Your tables here
$tables = array('table1', 'table2', 'table3');

for ($x=0; $x < 3; $x++) {

switch ($x) {
    // Escape user inputs for security and your columns
    case "1":
    $values[$tables[$x]] = array(mysqli_real_escape_string($link, $_POST['column1']), mysqli_real_escape_string($link, $_POST['column2']), mysqli_real_escape_string($link, $_POST['column3']));    
    $columns[$tables[$x]] = array('columnT1', 'columnT2', 'columnT3');
    break;

    case "2":
    $values[$tables[$x]] = array(mysqli_real_escape_string($link, $_POST['columnT1']), mysqli_real_escape_string($link, $_POST['columnT2']), mysqli_real_escape_string($link, $_POST['columnT3'])); 
    $columns[$tables[$x]] = array('columnT1', 'columnT2', 'columnT3');
    break;

    case "3":
    $values[$tables[$x]] = array(mysqli_real_escape_string($link, $_POST['columnT1']), mysqli_real_escape_string($link, $_POST['columnT2']), mysqli_real_escape_string($link, $_POST['columnT3'])); 
    $columns[$tables[$x]] = array('columnT1', 'columnT2', 'columnT3');
    break;
}

// attempt insert query execution
$sql = "INSERT INTO ".$tables[$x]." (".$columns[$tables[$x]][0].", ".$columns[$tables[$x]][1].", ".$columns[$tables[$x]][2].") VALUES ('".$values[$tables[$x]][1]."', '".$values[$tables[$x]][2]."', '".$values[$tables[$x]][3]."')";

if(mysqli_query($link, $sql)){
    echo "Records added successfully for ".$tables[$x].".";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}

}

// close connection
mysqli_close($link);
}
?>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM