2017-02-09 44 views
1

PHP新特性。如果这个问题很荒谬,请原谅我。无论如何,我有一些PHP将数据发送到数据库。下面是它的一些:如何触发这两个?

else { 

$sql = "INSERT INTO users (username, firstname, lastname, password) 
VALUES ('$username', '$firstname', '$lastname', '$pass')"; 

$sql = "CREATE TABLE $username (
day VARCHAR(10) NOT NULL, 
P1 VARCHAR(10) NOT NULL, 
P1_WORK VARCHAR(30) NOT NULL, 
P2 VARCHAR(10) NOT NULL, 
P2_WORK VARCHAR(30) NOT NULL, 
P3 VARCHAR(10) NOT NULL, 
P3_WORK VARCHAR(30) NOT NULL, 
P4 VARCHAR(10) NOT NULL, 
P4_WORK VARCHAR(30) NOT NULL, 
P5 VARCHAR(10) NOT NULL, 
P5_WORK VARCHAR(30) NOT NULL, 
P6 VARCHAR(10) NOT NULL, 
P6_WORK VARCHAR(30) NOT NULL 
)"; 

if (mysqli_query($con, $sql)) { 
    echo "okay"; 
} else { 
    echo "error"; 
} 
    } 

当我运行此,我仅实现第二$sql=将开展,因为我在同一个实例定义$sql两次。我怎样才能做到这一点,所以这些事件都是一举触发的?谢谢!

编辑:全码

<?php 
echo error_reporting(E_ALL); 
$username = strval($_GET['enteredUserName']); 
$pass = strval($_GET['enteredPassword']); 
$firstname = strval($_GET['enteredFirstName']); 
$lastname = strval($_GET['enteredLastName']); 

$con = mysqli_connect('localhost','XXXX','XXXX','XXXX'); 
if (!$con) { 
    die('Could not connect: ' . mysqli_error($con)); 
} else { 
$sql="SELECT * FROM users WHERE username = '".$username."'"; 
$result = mysqli_query($con,$sql); 
if ($result->num_rows > 0) { 
    echo "pop"; 
} else { 

$sql = "INSERT INTO users (username, firstname, lastname, password) 
VALUES ('$username', '$firstname', '$lastname', '$pass') "; 

$sql = "CREATE TABLE $username (
day VARCHAR(10) NOT NULL, 
P1 VARCHAR(10) NOT NULL, 
P1_WORK VARCHAR(30) NOT NULL, 
P2 VARCHAR(10) NOT NULL, 
P2_WORK VARCHAR(30) NOT NULL, 
P3 VARCHAR(10) NOT NULL, 
P3_WORK VARCHAR(30) NOT NULL, 
P4 VARCHAR(10) NOT NULL, 
P4_WORK VARCHAR(30) NOT NULL, 
P5 VARCHAR(10) NOT NULL, 
P5_WORK VARCHAR(30) NOT NULL, 
P6 VARCHAR(10) NOT NULL, 
P6_WORK VARCHAR(30) NOT NULL 
)"; 

if (mysqli_query($con, $sql)) { 
    echo "okay"; 
} else { 
    echo "error"; 
} 
    } 
mysqli_close($con); 
} 
?> 
+0

'mysqli_query($ con,$ sql1); mysqli_query($ con,$ sql2)' –

+0

U对两个不同的查询使用相同的变量。使用不同的变量 –

+1

我不知道我完全理解这将被插入。如果(mysqli_query($ con,$ sql)&& mysqli_query($ con,$ sql2))''我会将我的完整代码添加到问题@u_mulder – Caspar

回答

0

使用$sql1$sql2两个不同的变量为你的两个查询,然后

是(两者在同一时间): -

if(mysqli_query($con, $sql1) && mysqli_query($con, $sql2)){ 
    echo "Ok"; 
}else{ 
    echo "Error"; 
} 

还是一个接一个: -

if (mysqli_query($con, $sql)) { 
    if(mysqli_query($con, $sql2)){ 
     echo "OK"; 
    }else{ 
     echo "error"; 
    } 
} else { 
    echo "error"; 
} 

或者你需要检查mysqli_multi_query(): -

http://php.net/manual/en/mysqli.multi-query.php

+2

? –

+0

@u_mulder是的。我正在编辑那一个。但是,谢谢你指出 –

+1

谢谢,让它工作。 – Caspar

0

使用不同的变量不同的查询

$sql1 = "INSERT INTO users (username, firstname, lastname, password) 
VALUES ('$username', '$firstname', '$lastname', '$pass')"; 

$sql2 = "CREATE TABLE $username (
day VARCHAR(10) NOT NULL, 
P1 VARCHAR(10) NOT NULL, 
P1_WORK VARCHAR(30) NOT NULL, 
P2 VARCHAR(10) NOT NULL, 
P2_WORK VARCHAR(30) NOT NULL, 
P3 VARCHAR(10) NOT NULL, 
P3_WORK VARCHAR(30) NOT NULL, 
P4 VARCHAR(10) NOT NULL, 
P4_WORK VARCHAR(30) NOT NULL, 
P5 VARCHAR(10) NOT NULL, 
P5_WORK VARCHAR(30) NOT NULL, 
P6 VARCHAR(10) NOT NULL, 
P6_WORK VARCHAR(30) NOT NULL 
)"; 

if (mysqli_query($con, $sql1) && mysqli_query($con, $sql2)) { 
    echo "okay"; 
} else { 
    echo "error"; 
} 
+1

谢谢你kalai – Caspar

+0

欢迎:)如果我的答案是正确的,点击接受答案 –

1

就像u_mulder在评论中说的那样,你可以这样做,就像mysqli_error returns empty string if there is no error occured

$sql1 = 'first query'; 
$sql2 = 'second query'; 
mysqli_query($h, $sql1); 
mysqli_query($h, $sql2); 
$errorOccured = false; 
if (strlen(mysqli_error($h)) > 1) { 
    $errorOccured = true; 
} 

看看mysqli_error in the manual。或者,正如已经指出的那样,只需执行两个mysqli_queries并检查它们的返回值即可。 或者,如果您需要执行整个查询,也可以使用称为“事务”的事物,查看其中一个注释示例。取自mysqli_rollback in the manual

$all_query_ok=true; // our control variable 

//we make 4 inserts, the last one generates an error 
//if at least one query returns an error we change our control variable 
$mysqli->query("INSERT INTO myCity (id) VALUES (100)") ? null : $all_query_ok=false; 
$mysqli->query("INSERT INTO myCity (id) VALUES (200)") ? null : $all_query_ok=false; 
$mysqli->query("INSERT INTO myCity (id) VALUES (300)") ? null : $all_query_ok=false; 
$mysqli->query("INSERT INTO myCity (id) VALUES (100)") ? null : $all_query_ok=false; //duplicated PRIMARY KEY VALUE 

//now let's test our control variable 
// This is shorthand if else statement 
// ($statement) ? If true : if false; 
$all_query_ok ? $mysqli->commit() : $mysqli->rollback(); 

$mysqli->close();