0

我有以下代码来制作一个输入表单,该表单被写入名为“client”数据库“smsmart”的表中,该表具有字段名称、地址和电话

<?php

define ('DB_USER', 'root');
define ('DB_PASSWORD', '');
define ('DB_HOST', 'localhost');
define ('DB_NAME', 'smsmart');

$link = mysql_connect('localhost', 'root', '');

if (!$link) {
    die('Could not connect: ' . mysql_error());
}

$db_selected = mysql_select_db("smsmart");

if (!$db_selected) {
    die('Can\'t use ' . smsmart . ': ' . mysql_error());
}

$value1 = $_POST['username'];
$value2 = $_POST['address'];
$value3 = $_POST['mobileno'];

$sql = "INSERT INTO client (name,address,phone) VALUES ('$value1', '$value2', '$value3')";

mysql_close();
?>

表单中的“用户名”“地址”和“手机号”字段未写入数据库。我究竟做错了什么?

4

5 回答 5

1

看起来您正在生成$sql查询但没有执行它。鉴于您的输入缺乏卫生$_POST,您可能应该使用参数或 PDO 方法来保护自己免受潜在的 SQL 攻击。

下面是一个基于参数的 mySQLi 插入示例。

// connect to the database
$dbConnection = mysqli_connect("localhost", "root", "", "smsmart");
// prepare statement
$stmt = mysqli_prepare($dbConnection, "INSERT INTO client (name,address,phone) VALUES (?,?,?)");
// bind parameters
mysqli_stmt_bind_param($stmt, "sss", $value1, $value2, $value3);
// execute statement
mysqli_stmt_execute($stmt);
// close statement
mysqli_stmt_close($stmt);
// close database connection
mysqli_close($link);
于 2013-07-06T07:29:31.133 回答
0

你不见了mysql_query()

$sql = "INSERT INTO client (name,address,phone) VALUES ('$value1', '$value2', '$value3')";
mysql_query($sql);
mysql_close();
于 2013-07-06T07:26:46.067 回答
0
$sql = "INSERT INTO client (name,address,phone) VALUES ('$value1', '$value2', '$value3')";

mysql_close();

因此添加mysql_query

应该

$sql = "INSERT INTO client (name,address,phone) VALUES ('$value1', '$value2', '$value3')";
mysql_query($sql);
mysql_close();
于 2013-07-06T07:30:45.580 回答
0

一切看起来都很棒,除了一个:只需使用 mysql_query() 函数,就像

$sql = "INSERT INTO client (name,address,phone) VALUES ('$value1', '$value2', 
     '$value3')";
     mysql_query($sql);
     mysql_close();
于 2013-07-06T07:33:31.677 回答
0

您将查询保存在一个变量中,但该变量本身没有做任何事情

mysql_query($sql);

mysql_query将帮助您在数据库中插入所有数据。

于 2013-07-06T07:41:19.150 回答