我使用php,mysql和xampp服务器创建了一个表单。问题是,无论我在这个表单中写什么,它都表明"消息无法发送"甚至当我使用http://localhost/phpmyadmin/检查我的数据库时,消息不存在。这是代码。 P.S我跟着一个视频教程,它完全相同,让我完全失去了。请帮忙。
连接代码为:
<?php
$db_host = 'localhost';
$db_user= 'root';
$db_pass= 'the password';
$db_name= 'chat';
if ($connection= mysql_connect($db_host, $db_user, $db_pass)) {
echo "Connected to Database Server...<br />";
if ($database= mysql_select_db($db_name, $connection)) {
echo "Database has been selected... <br />";
} else {
echo "Database was not found. <br />";
}
} else {
echo "Unable to connect to MYSQL server.<br />";
}
?>
功能代码是:
<?php
function get_msg() {
$query = "SELECT 'Sender', 'Message' FROM 'chat' . 'chat'";
$run = mysql_query($query);
$messages= array();
while($message = mysql_fetch_assoc($run)) {
$messages[]= array ('sender' =>$message['Sender'],
'message'=>$message['Message']);
}
return $messages;
}
function send_msg($sender, $message) {
if(!empty($sender) && !empty($message)){
$sender = mysql_real_escape_string($sender);
$message = mysql_real_escape_string($message);
$query = "INSERT INTO 'chat'.'chat' VALUES (null, '{$sender}', '$message')";
if($run = mysql_query($query)) {
return true;
} else {
return false;
}
} else {
return false;
}
}
?>
答案 0 :(得分:2)
我在SQL查询中发现了问题:
:first-child
您必须在那里指定字段,SQL查询无效。你也使用了错误的转义字符。这有效:
$query = "INSERT INTO 'chat'.'chat' VALUES (null, '{$sender}', '$message')";
如果使用AUTO_INCREMENT:
,则不必指定空值$query = "INSERT INTO `chat`.`chat` (`ID`, `sender`, `message`) VALUES (null, '{$sender}', '$message')";
请使用MySQLi而不是MySQL,因为它已被弃用。此外,数据库不应指定两次,简单使用:
$query = "INSERT INTO `chat`.`chat` (`sender`, `message`) VALUES ('{$sender}', '$message')";
答案 1 :(得分:2)
$query = "INSERT INTO `chat`.`chat` VALUES (null, '{$sender}', '$message')";
请注意`并且它不是&#39;
答案 2 :(得分:2)
我是PHP和MySQL的新手所以我倾向于在出错时总是明确地退出或死在MySQL上。
tr.append('<td></td>')
这样我就把它扔在了我的脸上,直到我把它固定下来并纠正错误之后再也无法进一步了。
private static final Pattern SPACES = Pattern.compile("\\s+");
private static final Pattern STAR_TO_END = Pattern.compile("\\s*\\*.*");
public static String[] read(final String filename)
{
final Path path = Paths.get(filename);
try (
// UTF-8 by default; excellent
final Stream<String> lines = Files.line(path);
) {
return lines.map(line -> STAR_TO_END.matcher(line).replaceFirst(""))
.flatMap(SPACES::splitAsStream)
.collect(Collectors.toArray(String[]::new));
}
}
中的数字只是在代码中找到错误的位置,因此是唯一的。
我知道当你了解你的东西时,这会产生反效果,但对我而言,这是一个非常宝贵的学习工具,还有php.net dev.mysql.com和stackoverflow.com