发送php提交到MySQL
我不是php的高手,但可以让它工作,因为我的脚本可以工作,但会让数据库看起来一团糟。我将链接一个如何提交的截图和我的代码。我试图让它一次将所有数据提交到我的sql表中的一行(行),但它会一次接一次地运行每个insert查询,因为我让它把数据库弄得一团糟。如何缩短此代码以使其同时执行所有插入查询 以下是我的php:发送php提交到MySQL,php,html,mysql,Php,Html,Mysql,我不是php的高手,但可以让它工作,因为我的脚本可以工作,但会让数据库看起来一团糟。我将链接一个如何提交的截图和我的代码。我试图让它一次将所有数据提交到我的sql表中的一行(行),但它会一次接一次地运行每个insert查询,因为我让它把数据库弄得一团糟。如何缩短此代码以使其同时执行所有插入查询 以下是我的php: <?php // send dataset 1 if (isset($_REQUEST['sendName'])) { $yourfield=preg_replace('/[
<?php
// send dataset 1
if (isset($_REQUEST['sendName'])) {
$yourfield=preg_replace('/[^a-zA-Z0-9\ ]/','',$_REQUEST['sendName']);
$yourfield=htmlspecialchars($yourfield);
} else {
die('User did not send any data to be saved! field1');
}
$pdo_dsn='mysql:dbname=smsdata;host=localhost';
$pdo_user='root';
$pdo_password='mypasswd';
try {
$conn = new PDO($pdo_dsn, $pdo_user, $pdo_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$qry=$conn->prepare('INSERT INTO SMSTable (sendName) VALUES (:sendName)');
$qry->execute(Array(":sendName" => $yourfield));
} catch (PDOException $e) {
echo 'Error: ' . $e->getMessage() . " file: " . $e->getFile() . " line: " . $e->getLine();
exit;
}
// send dataset 2
if (isset($_REQUEST['sendNumber'])) {
$yourfield=preg_replace('/[^a-zA-Z0-9\ ]/','',$_REQUEST['sendNumber']);
$yourfield=htmlspecialchars($yourfield);
} else {
die('User did not send any data to be saved! field2');
}
$pdo_dsn='mysql:dbname=smsdata;host=localhost';
$pdo_user='root';
$pdo_password='mypasswd';
try {
$conn = new PDO($pdo_dsn, $pdo_user, $pdo_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$qry=$conn->prepare('INSERT INTO SMSTable (sendNumber) VALUES (:sendNumber)');
$qry->execute(Array(":sendNumber" => $yourfield));
} catch (PDOException $e) {
echo 'Error: ' . $e->getMessage() . " file: " . $e->getFile() . " line: " . $e->getLine();
exit;
}
// send dataset 3
if (isset($_REQUEST['sendEmail'])) {
$yourfield=preg_replace('/[^a-zA-Z0-9\ ]/','',$_REQUEST['sendEmail']);
$yourfield=htmlspecialchars($yourfield);
} else {
die('User did not send any data to be saved! field3');
}
$pdo_dsn='mysql:dbname=smsdata;host=localhost';
$pdo_user='root';
$pdo_password='mypasswd';
try {
$conn = new PDO($pdo_dsn, $pdo_user, $pdo_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$qry=$conn->prepare('INSERT INTO SMSTable (sendEmail) VALUES (:sendEmail)');
$qry->execute(Array(":sendEmail" => $yourfield));
} catch (PDOException $e) {
echo 'Error: ' . $e->getMessage() . " file: " . $e->getFile() . " line: " . $e->getLine();
exit;
}
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}
?>
这是它对数据库的作用,它没有像我希望的那样整齐地放在一行上,这会使它像截图中那样一团糟,但它的工作方式并不像我需要的那样。在屏幕截图中可以看到它是如何“步进”数据的,但我需要将它一次跨越顶行
我知道我的代码效率非常低,这就是我在这里的原因:)每次调用
INSERT
它都会创建一个新行,因此您将每个参数插入到表的不同行中。您应该只插入一行,其中包含所有3个参数
$params = array();
foreach (array('sendName', 'sendNumber', 'sendEmail') as $field) {
if (!isset($_REQUEST[$field])) {
die("User didn't send $field");
}
$params[$field] = preg_replace('/[^a-zA-Z0-9\s]/','',$_REQUEST[$field]);
}
$pdo_dsn='mysql:dbname=smsdata;host=localhost';
$pdo_user='root';
$pdo_password='mypasswd';
try {
$conn = new PDO($pdo_dsn, $pdo_user, $pdo_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$qry=$conn->prepare('INSERT INTO SMSTable (sendName, sendNumber, sendEmail) VALUES (:sendName, :sendNumber, :sendEmail)');
$qry->execute($params);
} catch (PDOException $e) {
echo 'Error: ' . $e->getMessage() . " file: " . $e->getFile() . " line: " . $e->getLine();
exit;
}
我打电话给
htmlentities
。在网页上显示数据时,而不是在数据库中存储数据时,应该使用该语句。执行一个INSERT
语句,而不是三个。如何使用当前代码执行该语句?我在上一节中尝试将它们组合在一起,结果显示错误为500。尝试在所有3个部分之后创建一个新变量来实现这一点,它给了我php行错误。我不知道如何把所有的变量放在一起,然后一次只插入一个变量,这样做是可行的,但它会让混乱的数据库变得完美。谢谢。我将我的其他字段添加到它中(没有发布完整的代码),这可能太长了。现在开始工作了。