我目前正在使用准备好的 SQL 语句遵循 W3Schools 教程,当我尝试将数据插入数据库时,它说 $firstname = "Nathan"和 $lastname = "Kent"是未使用的局部变量?它还没有返回错误,因此连接正常,当我检查数据库时,它没有新条目。
function setData(){
global $servername;
global $username;
global $password;
global $dbname;
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} else{
echo "Connection Successful" . "<br>";
}
$stmt = $conn->prepare("INSERT INTO test(firstname, surname) VALUES (?,?)");
$stmt->bind_param("ss", $firstname, $surname);
$firstname = "James";
$lastname = "Williams";
$stmt->execute();
echo "New Records Created";
$stmt->close();
$conn->close();
}
最佳答案
使用 MYSQLI,您实际上需要查找错误,而不是假设它们会对您大喊大叫。
function setData(){
global $servername;
global $username;
global $password;
global $dbname;
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} else{
echo "Connection Successful" . "<br>";
}
$stmt = $conn->prepare("INSERT INTO test(firstname, surname) VALUES (?,?)");
// add error check
if ( $stmt === false ) {
echo $conn->error;
exit;
}
// Its not necessary to load the variables before the `bind_param`
// but as you dont actually have these variables yet you do
$firstname = "James";
$lastname = "Williams";
$stmt->bind_param("ss", $firstname, $surname);
$status = $stmt->execute();
// add error check
if ( $status === false ) {
echo $conn->error;
exit;
}
echo "New Records Created";
$stmt->close();
$conn->close();
}
您也可以通过在主线代码中连接到数据库并将连接参数以及数据参数传递给函数来稍微清理一下
function setData($conn, $firstname, $lastname){
$stmt = $conn->prepare("INSERT INTO test(firstname, surname) VALUES (?,?)");
// add error check
if ( $stmt === false ) {
echo $conn->error;
exit;
}
$stmt->bind_param("ss", $firstname, $surname);
$status = $stmt->execute();
// add error check
if ( $status === false ) {
echo $conn->error;
exit;
}
return "New Records Created";
$stmt->close();
$conn->close();
}
$servername = '127.0.0.1';
$username = 'root';
$password = 'veryStRongPassPhrASe';
$dbname = 'mydatabase';
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} else{
echo "Connection Successful" . "<br>";
}
$msg = setData($conn, 'Fred', 'Bloggs');
echo $msg;
关于php - 准备好的 SQL 语句 INSERT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38983523/