Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
发送php提交到MySQL_Php_Html_Mysql - Fatal编程技术网

发送php提交到MySQL

发送php提交到MySQL,php,html,mysql,Php,Html,Mysql,我不是php的高手,但可以让它工作,因为我的脚本可以工作,但会让数据库看起来一团糟。我将链接一个如何提交的截图和我的代码。我试图让它一次将所有数据提交到我的sql表中的一行(行),但它会一次接一次地运行每个insert查询,因为我让它把数据库弄得一团糟。如何缩短此代码以使其同时执行所有插入查询 以下是我的php: <?php // send dataset 1 if (isset($_REQUEST['sendName'])) { $yourfield=preg_replace('/[

我不是php的高手,但可以让它工作,因为我的脚本可以工作,但会让数据库看起来一团糟。我将链接一个如何提交的截图和我的代码。我试图让它一次将所有数据提交到我的sql表中的一行(行),但它会一次接一次地运行每个insert查询,因为我让它把数据库弄得一团糟。如何缩短此代码以使其同时执行所有插入查询

以下是我的php:

<?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行错误。我不知道如何把所有的变量放在一起,然后一次只插入一个变量,这样做是可行的,但它会让混乱的数据库变得完美。谢谢。我将我的其他字段添加到它中(没有发布完整的代码),这可能太长了。现在开始工作了。