【发布时间】:2014-03-02 02:13:19
【问题描述】:
我有这个脚本。
<?php
session_start();
if (!isset($_POST['text']) || $_POST['text'] == "" || strlen($_POST['text']) < 5) {
echo "error";
echo '<meta http-equiv="refresh" content="2;url=../prispevky/add.php">';
return 0;}
else $text = $_POST['text'];
if (!isset ($_SESSION['nick'])) {
echo "error";
echo '<meta http-equiv="refresh" content="2;url=../error.php">';
return 0;}
else $nick = $_SESSION['nick'];
$time = time();
$farby = array("red","blue","green", "brown", "orange", "purple", "grey", "lime", "yellow", "pink");
include_once "../inkludy/conect.php";
$new = $_POST['text'];
echo $new;
$new = mysqli_real_escape_string($_POST['text']);
echo $new;
$new = str_replace(array("\\r\\n", "\n"), "</br>", $new);
for ($i=0;$i<10;$i++){
if (preg_match ('/< .{1,10} >/', $new, $meno)){
$nove_meno = preg_replace('/(< )|( >)/', '', $meno[0]);
$new = preg_replace('/' . $meno[0] . '/', '<b style="color:' . $farby[$i] . '">>' . $nove_meno . '<</b>', $new);
}
}
try {
$query = "INSERT INTO hlasky (autor,text,onoff,time) VALUES (:nick,:new,:onoff,:time)";
$stmt = $conn->prepare($query);
$stmt->bindValue(':nick', $nick, PDO::PARAM_STR);
$stmt->bindValue(':new', $new, PDO::PARAM_STR);
$stmt->bindValue(':onoff', '1', PDO::PARAM_INT);
$stmt->bindValue(':time', $time, PDO::PARAM_INT);
$stmt->execute();}
catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();}
?>
<meta http-equiv="refresh" content="10;url=../hmenu/najn.php">
$_POST = "asdasd" 和
$new = $_POST['text'];
echo $new;
工作正常,但和 asdasd 但相呼应
$new = mysqli_real_escape_string($_POST['text']);
echo $new;
使 $new 为空。每个人都认为我没有 mysql 连接,但我有并且
INSERT INTO hlasky (autor,text,onoff,time) VALUES (:nick,:new,:onoff,:time)
也可以,但是 :new 是空的 你能帮我如何不松开 $new 字符串吗?
这是包含在 include_once "../inkludy/conect.php" 中的我的连接脚本;
<?php
$server = "localhost";
$username = "";
$password = "";
$databaza_meno = "iz";
$dsn = "mysql:unix_socket=/tmp/mysql50.sock;dbname=$databaza_meno";
$conn = new PDO($dsn, $username, $password);
$db_spojenie = mysql_connect($server, $username, $password);
$db = mysql_select_db($databaza_meno, $db_spojenie);
mysql_query("SET NAMES utf-8");
?>
【问题讨论】:
-
您不应该将 *real_escape_string 与 PDO 一起使用。哦,你把 mysql 和 mysqli 和 pdo 混合在一起
-
你为什么要混合
mysql_*和PDO? -
@OdkoPP 您使用 PDO 或 mysqli,而不是两者。然后使用准备好的语句,忘记转义字符串。
-
所以我可以删除 real_escape_string 并只使用 PDO 吗?
-
@OdkoPP 是的,你可以这样做。尝试谷歌搜索“pdo 准备语句教程”并从那里开始。