gpt4 book ai didi

php - MySQL PHP 查询问题

转载 作者:行者123 更新时间:2023-12-01 00:49:25 26 4
gpt4 key购买 nike

我在 PHP 中的 MySQL 查询方面需要一些帮助

在我说之前,我使用 mysql_*功能,我知道它们已经折旧,但仅来自 PHP v5.5,我在我的服务器和其他服务器上安装了 PHP 5.3 mysql_*函数正在运行,只有这个。

我试图在表单提交时将表单中的值插入到表中,代码位于正确的位置,因为 PHP 发送电子邮件并回显“邮件已发送”。

这是我的查询:

mysql_query("INSERT INTO customers (
name,email,telephone
) VALUES (
".$_POST['name'].",
".$_POST['email'].",
".$_POST['telephone'].",
)");

这是它所在的文档:

<?php

// Database connect
$db_host = 'localhost';
$db_user = 'redjaxco';
$db_pass = 'CORRECT PASSWORD';
$db_database = 'redjaxco_website';

$link = mysql_connect($db_host,$db_user,$db_pass) or die('Unable to establish a DB connection');

mysql_select_db($db_database,$link);
mysql_query("SET names UTF8");

$owner_email = "contact@red-jax.com";

$headers = 'From:' . $_POST["email"];
$subject = 'Online Form - '. $_POST["topic"]. " : " . $_POST["name"];
$messageBody = "";

if($_POST['topic']!='nope'){
$messageBody .= '<p>Subject: ' . $_POST["topic"] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}
if($_POST['name']!='nope'){
$messageBody .= '<p>Visitor: ' . $_POST["name"] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}
if($_POST['email']!='nope'){
$messageBody .= '<p>Email Address: ' . $_POST['email'] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}else{
$headers = '';
}
if($_POST['phone']!='nope'){
$messageBody .= '<p>Phone Number: ' . $_POST['phone'] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}
if($_POST['message']!='nope'){
$messageBody .= '<p>Message: ' . $_POST['message'] . '</p>' . "\n";
}

if($_POST["stripHTML"] == 'true'){
$messageBody = strip_tags($messageBody);
}

try{
if(!mail($owner_email, $subject, $messageBody, $headers))
{
throw new Exception('mail failed');
}
else
{
mysql_query("INSERT INTO customers (
name,email,telephone
) VALUES (
".$_POST['name'].",
".$_POST['email'].",
".$_POST['telephone'].",
)");

echo 'mail sent';
}
}catch(Exception $e){
echo $e->getMessage() ."\n";
}
?>

最佳答案

对于调试,通常的模式是在将 SQL 文本发送到数据库之前打印出 SQL 文本,如下所示:

$querytext = "INSERT INTO customers (
name,email,telephone
) VALUES (
'".mysql_real_escape_string($_POST['name'])."',
'".mysql_real_escape_string($_POST['email'])."',
'".mysql_real_escape_string($_POST['telephone'])."',
)";
echo "querytext=" . $querytext; // display statement for debugging
mysql_query($querytext) or die(mysql_error());

检查语句是否真的成功,如果没有,得到一些你可以使用的输出,而不是把 Dr.Evil 小拇指拉到嘴角“我只是假设一切都会按计划进行。什么?”

请帮自己一个大忙,清理这些输入,像这样:

    mysql_real_escape_string($_POST['name'])

要回答您的问题,您的查询失败的最可能原因是您语句中的字符串文字没有用引号引起来...

比较:

... VALUES (paul,paul@foo.com,5551212) 

... VALUES ('paul','paul@foo.com','5551212')

并清理这些输入,以处理像 'O'Reilly

这样的名称
... VALUES ('O'Reilly','ore@me.org','5551212')

还有更多名字令人不安的客户,比如 Little Bobby Tables...

"Robert','',''); DROP TABLE customers; -- "

关于php - MySQL PHP 查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17665587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com